Skip to content

Replit agent - #16

Merged
erinepshovel-code merged 124 commits into
mainfrom
replit-agent
May 4, 2026
Merged

erinepshovel-code merged 124 commits into
mainfrom
replit-agent

Conversation

@erinepshovel-code

Copy link
Copy Markdown
Collaborator

No description provided.

erinepshovel added 30 commits April 17, 2026 05:59
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 1c3bb4a9-738e-4090-822b-d80cc1d3b5b1
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/GNNQlc8
Replit-Commit-Deployment-Build-Id: 238824e7-2fa4-412e-ab49-ede4bb229ab1
Replit-Helium-Checkpoint-Created: true
Add `gpt-5-api` and `grok-api` skills to `.agents/skills/` for interacting with respective AI models, including model selection, tool calling, and API patterns.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: fff9d69f-e954-4248-a4b5-e4336aefbda5
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/GNNQlc8
Replit-Helium-Checkpoint-Created: true
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 60bb15ea-7e1b-4569-8dab-06497897de0e
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/cZk7UhP
Replit-Commit-Deployment-Build-Id: c40e9ad8-ef66-46d6-ac55-be76a80c6b13
Replit-Helium-Checkpoint-Created: true
Update PKG-INFO, SOURCES.txt, dependency_links.txt, requires.txt, and top_level.txt files to reflect project metadata and updated dependencies.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 8213443f-9e52-4cdb-adf0-14c92c16fca8
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/cZk7UhP
Replit-Helium-Checkpoint-Created: true
User scope + memory + idempotency fixes across the Python backend.

Chat (python/routes/chat.py):
- User-scope all conversation list/get/patch/delete via _require_owned_conv
  (404 instead of 403 to avoid leaking existence).
- Add 15-minute TTL + sweep for the in-memory _pending_gates dict via
  _store_pending_gate / _sweep_pending_gates so abandoned approval gates
  don't leak memory forever.
- Replace bare asyncio.create_task for zeta evaluation with the new
  tracked _spawn_bg helper.

Background tasks:
- New python/services/bg_tasks.py: tracked spawn() with strong refs +
  exception logging + cancel_all() for graceful shutdown.
- python/database.py get_session swallows asyncio.CancelledError cleanly
  to avoid noisy rollback errors at shutdown.
- python/routes/focus.py launch_subagent now uses _spawn_bg.

Storage (python/storage/core.py):
- get_conversations(user_id=...) with backward-compat for legacy NULL rows.
- Mass-assignment allowlists (_CONV_ALLOWED_FIELDS, _MSG_ALLOWED_FIELDS)
  applied to create_conversation and create_message.

Billing (python/routes/billing.py):
- Stripe webhook idempotency via processed_stripe_events table
  (_ensure_stripe_events_table, _claim_stripe_event); duplicate events
  short-circuit before _dispatch_webhook.
- New internal POST /internal/promote-ws gated by INTERNAL_API_SECRET
  header for the Express auth layer to call after register/login. Task
  #87 will wire the call from server/auth/routes.ts.

Schema (shared/schema.ts):
- Composite index idx_conversations_user_updated on
  (user_id, updated_at desc) for fast per-user listing.
- New processedStripeEvents pgTable matching the Python lazy CREATE.
- npm run db:push applied cleanly.

Deviations: WS-tier promotion at login is exposed as an internal endpoint
rather than wired directly, since auth lives in the Express layer owned
by Task #87.
User scope + memory + idempotency fixes across the Python backend.

Chat (python/routes/chat.py):
- User-scope all conversation list/get/patch/delete AND send_message via
  _require_owned_conv (404 instead of 403 to avoid leaking existence).
- list_conversations now requires caller identity (401 when missing) so a
  missing x-user-id header can never return a global list.
- Add 15-minute TTL + sweep for the in-memory _pending_gates dict via
  _store_pending_gate / _sweep_pending_gates so abandoned approval gates
  don't leak memory forever.
- Replace bare asyncio.create_task for zeta evaluation with the new
  tracked _spawn_bg helper.

Background tasks:
- New python/services/bg_tasks.py: tracked spawn() with strong refs +
  exception logging + cancel_all() for graceful shutdown.
- python/database.py get_session swallows asyncio.CancelledError cleanly
  to avoid noisy rollback errors at shutdown.
- python/routes/focus.py launch_subagent now uses _spawn_bg.

Storage (python/storage/core.py):
- get_conversations(user_id=...) with backward-compat for legacy NULL rows.
- Mass-assignment allowlists (_CONV_ALLOWED_FIELDS, _MSG_ALLOWED_FIELDS)
  applied to create_conversation and create_message.

Billing (python/routes/billing.py):
- Stripe webhook idempotency via processed_stripe_events table
  (_ensure_stripe_events_table, _claim_stripe_event); duplicate events
  short-circuit before _dispatch_webhook.
- New internal POST /internal/promote-ws gated by INTERNAL_API_SECRET
  header for the Express auth layer to call after register/login. Task
  #87 will wire the call from server/auth/routes.ts.

Schema (shared/schema.ts):
- Composite index idx_conversations_user_updated on
  (user_id, updated_at desc) for fast per-user listing.
- New processedStripeEvents pgTable matching the Python lazy CREATE.
- npm run db:push applied cleanly.

Deviations: WS-tier promotion at login is exposed as an internal endpoint
rather than wired directly, since auth lives in the Express layer owned
by Task #87.
User scope + memory + idempotency fixes across the Python backend.

Chat (python/routes/chat.py):
- User-scope all conversation list/get/patch/delete AND send_message via
  _require_owned_conv (404 instead of 403 to avoid leaking existence).
- list_conversations now requires caller identity (401 when missing) so a
  missing x-user-id header can never return a global list.
- Add 15-minute TTL + sweep for the in-memory _pending_gates dict via
  _store_pending_gate / _sweep_pending_gates so abandoned approval gates
  don't leak memory forever.
- Replace bare asyncio.create_task for zeta evaluation with the new
  tracked _spawn_bg helper.

Background tasks:
- New python/services/bg_tasks.py: tracked spawn() with strong refs +
  exception logging + cancel_all() for graceful shutdown.
- python/database.py get_session swallows asyncio.CancelledError cleanly
  to avoid noisy rollback errors at shutdown.
- python/routes/focus.py launch_subagent now uses _spawn_bg.

Storage (python/storage/core.py):
- get_conversations(user_id=...) with backward-compat for legacy NULL rows.
- Mass-assignment allowlists (_CONV_ALLOWED_FIELDS, _MSG_ALLOWED_FIELDS)
  applied to create_conversation and create_message.

Billing (python/routes/billing.py):
- Stripe webhook idempotency via processed_stripe_events table
  (_ensure_stripe_events_table, _claim_stripe_event); duplicate events
  short-circuit before _dispatch_webhook.
- New internal POST /internal/promote-ws gated by INTERNAL_API_SECRET
  header for the Express auth layer to call after register/login. Task
  #87 will wire the call from server/auth/routes.ts.

Schema (shared/schema.ts):
- Composite index idx_conversations_user_updated on
  (user_id, updated_at desc) for fast per-user listing.
- New processedStripeEvents pgTable matching the Python lazy CREATE.
- npm run db:push applied cleanly.

Deviations: WS-tier promotion at login is exposed as an internal endpoint
rather than wired directly, since auth lives in the Express layer owned
by Task #87.
Updates include:
- Enhancing inference layer with robust error sanitization, retry mechanisms with jittered backoff, and duplicate tool call detection.
- Refining frontend components for better accessibility, stable rendering, immediate UI updates, and mobile usability.
- Fixing issues with model environment variable resolution to prevent stale defaults.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 4aa4994d-0644-470c-a658-e171af644d88
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/ppVBZ6c
Replit-Helium-Checkpoint-Created: true
…at approvals

Implement a background task in FastAPI to periodically sweep and remove expired chat approval entries, and add a fire-and-forget mechanism in Express.js to promote work-email signups to the WS tier upon successful login or registration.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: f735a9d8-803b-45d8-98e4-b84745312106
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/GROzbEv
Replit-Helium-Checkpoint-Created: true
Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 6b577bdf-4171-4f31-b422-d8b0248c24bb
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/GROzbEv
Replit-Helium-Checkpoint-Created: true
Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 6b577bdf-4171-4f31-b422-d8b0248c24bb
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/GROzbEv
Replit-Helium-Checkpoint-Created: true
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: bb2f4b04-aa5a-47fe-b920-a81639b5a0ef
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/1ws9t56
Replit-Commit-Deployment-Build-Id: a56ec423-28e7-4ab0-b291-4817667fa4cc
Replit-Helium-Checkpoint-Created: true
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: bb2f4b04-aa5a-47fe-b920-a81639b5a0ef
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/1ws9t56
Replit-Commit-Deployment-Build-Id: a56ec423-28e7-4ab0-b291-4817667fa4cc
Replit-Helium-Checkpoint-Created: true
Add focus_router import and include it in ALL_ROUTERS in python/routes/__init__.py to properly register the POST /api/v1/subagent endpoint.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: b36275c8-39d6-4945-b721-8257cc953e6c
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/1ws9t56
Replit-Helium-Checkpoint-Created: true
Add focus_router import and include it in ALL_ROUTERS in python/routes/__init__.py to properly register the POST /api/v1/subagent endpoint.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: b36275c8-39d6-4945-b721-8257cc953e6c
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/1ws9t56
Replit-Helium-Checkpoint-Created: true
Conditionally render the model badge component, ensuring it only appears for assistant messages and not user-submitted prompts by checking the `isUser` flag in `chat-messages.tsx`.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: f67672aa-85c0-4fe8-b361-d075a2340f1c
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/5KEasmR
Replit-Helium-Checkpoint-Created: true
Conditionally render the model badge component, ensuring it only appears for assistant messages and not user-submitted prompts by checking the `isUser` flag in `chat-messages.tsx`.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: f67672aa-85c0-4fe8-b361-d075a2340f1c
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/5KEasmR
Replit-Helium-Checkpoint-Created: true
Serve a shell script at the /a0 endpoint that allows users to interact with the AI agent from their terminal, with support for one-shot commands and an interactive REPL.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 61e00f11-e74e-42ed-9efe-425029a37bca
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/5KEasmR
Replit-Helium-Checkpoint-Created: true
Serve a shell script at the /a0 endpoint that allows users to interact with the AI agent from their terminal, with support for one-shot commands and an interactive REPL.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 61e00f11-e74e-42ed-9efe-425029a37bca
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/5KEasmR
Replit-Helium-Checkpoint-Created: true
Integrate X (Twitter) posting functionality by adding a new tool schema and implementing OAuth 1.0a signing for authenticated API requests.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 02b8f569-4fd8-4cad-80f5-00454bc29ca6
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/yzQr6YW
Replit-Helium-Checkpoint-Created: true
Integrate X (Twitter) posting functionality by adding a new tool schema and implementing OAuth 1.0a signing for authenticated API requests.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 02b8f569-4fd8-4cad-80f5-00454bc29ca6
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/yzQr6YW
Replit-Helium-Checkpoint-Created: true
Update GitHub Actions workflow files to use v5 of checkout and setup-node actions and v6 of setup-python action to address Node.js 20 deprecation warnings.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 68834e75-4160-49be-a182-e658ef121cb3
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/yzQr6YW
Replit-Helium-Checkpoint-Created: true
Update GitHub Actions workflow files to use v5 of checkout and setup-node actions and v6 of setup-python action to address Node.js 20 deprecation warnings.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 68834e75-4160-49be-a182-e658ef121cb3
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/yzQr6YW
Replit-Helium-Checkpoint-Created: true
Extend the agent_instances table schema to include fields for archetype, model selection, personality traits, system prompts, and other configuration options for agents.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 9375510c-af2b-4a45-9f1f-fdaa64c2cd9f
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/yzQr6YW
Replit-Helium-Checkpoint-Created: true
Extend the agent_instances table schema to include fields for archetype, model selection, personality traits, system prompts, and other configuration options for agents.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 9375510c-af2b-4a45-9f1f-fdaa64c2cd9f
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/yzQr6YW
Replit-Helium-Checkpoint-Created: true
Introduce new tables for agent stats, matches, and related fields to agent instances schema.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: a2410da2-f3b4-47ba-b03a-b6e50ff8c556
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/yzQr6YW
Replit-Helium-Checkpoint-Created: true
Introduce new tables for agent stats, matches, and related fields to agent instances schema.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: a2410da2-f3b4-47ba-b03a-b6e50ff8c556
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/yzQr6YW
Replit-Helium-Checkpoint-Created: true
Implement a new "Forge" tab for creating AI agents with selectable archetypes, models, tools, and personality settings, while also updating backend routes and database schema to support agent instantiation and management.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 601f595c-3619-4133-99d4-7e9be7842433
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/Io9SORr
Replit-Helium-Checkpoint-Created: true
Implement a new "Forge" tab for creating AI agents with selectable archetypes, models, tools, and personality settings, while also updating backend routes and database schema to support agent instantiation and management.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 601f595c-3619-4133-99d4-7e9be7842433
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/Io9SORr
Replit-Helium-Checkpoint-Created: true
Update energy registry with new cache pricing, modify cost estimation to account for cached tokens, and add a helper to normalize cache usage data for display in chat metadata.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 989152a5-26bd-47df-a87b-e065a495f0b5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 8670356f-ec3c-4ccd-87b5-898b32cc4b31
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ea70512b-ff44-4f4d-bb44-93c50f1a0571/989152a5-26bd-47df-a87b-e065a495f0b5/KOnGKgx
Replit-Helium-Checkpoint-Created: true
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 4, 2026 02:13

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 81b650ae67

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread python/routes/liminals.py

# 1) Pending sub-agents (conversations with subagent_status='running')
try:
all_convs = await storage.list_conversations(uid)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Call the correct storage API for conversations

get_liminals calls storage.list_conversations(uid), but the storage layer only defines get_conversations(...) (see python/storage/core.py). This raises at runtime and is swallowed by the broad except, so all_convs is always []; as a result the “Running sub-agents” and “Archived conversations” sections silently report empty data for every user.

Useful? React with 👍 / 👎.

Comment thread python/routes/liminals.py

# 4) Inactive / errored ws_modules
try:
ws_mods = await storage.list_ws_modules()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Scope ws-module reads to the authenticated user

This endpoint fetches ws modules with storage.list_ws_modules() and then returns module metadata directly. list_ws_modules currently selects all WsModule rows without an owner_id filter, so any authenticated caller can enumerate other users’ module names/statuses via /api/v1/liminals. The query should be user-scoped (e.g., filter by the current uid) before returning results.

Useful? React with 👍 / 👎.

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
erinepshovel-code and others added 5 commits May 3, 2026 19:15
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
…in's more complete versions

Co-authored-by: erinepshovel-code <250928284+erinepshovel-code@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Comment thread server/index.ts Fixed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 115 out of 119 changed files in this pull request and generated 8 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +88 to +93
@router.get("/{artifact_id}")
async def get_artifact(artifact_id: str):
row = await _A._fetch_row(artifact_id)
if not row:
raise HTTPException(status_code=404, detail="artifact not found")
return _serialize(row)
Comment on lines +109 to +111
else:
_require_uid(request)
data = await _A.get_artifact_bytes(artifact_id)
Comment thread client/src/pages/chat.tsx Outdated
Comment on lines +153 to +160
const sendMessage = useMutation({
mutationFn: async (content: string) => {
mutationFn: async (payload: { content: string; attachment_ids?: number[] }) => {
if (!activeConvId) throw new Error("No conversation selected");
const res = await apiRequest("POST", `/api/v1/conversations/${activeConvId}/messages`, { role: "user", content });
const res = await apiRequest("POST", `/api/v1/conversations/${activeConvId}/messages`, {
role: "user",
content: payload.content,
attachment_ids: payload.attachment_ids ?? [],
});
Comment thread python/routes/chat.py Outdated
Comment on lines +151 to +162
@router.get("/conversations")
async def list_conversations(request: Request):
async def list_conversations(request: Request, agent_id: int | None = None):
"""List conversations.

Defaults to a0-only (excludes any conversation pinned to a Forge agent).
Pass ?agent_id=<id> to fetch only conversations pinned to that agent —
used by the Forge tab's inline chat surface.
"""
uid = _caller_uid(request)
if not uid:
# Never return a global list when caller identity is missing.
raise HTTPException(status_code=401, detail="authentication required")
return await storage.get_conversations(user_id=uid)
return await storage.get_conversations(user_id=uid, agent_id=agent_id)
Comment thread python/routes/chat.py
Comment on lines 112 to +115
class CreateConversation(BaseModel):
title: str = "New Chat"
model: str = "gemini"
agent_id: Optional[int] = None
Comment on lines +197 to +198
</div>
)}
Comment thread python/routes/chat.py Outdated
Comment on lines 315 to 316
model_id = body.model or agent_model_id or conv.get("model", "grok")
provider_id = energy_registry.get_active_provider() or model_id
Comment on lines +64 to +80
@router.get("")
async def list_artifacts(
kind: Optional[str] = None,
tool: Optional[str] = None,
range_: Optional[str] = Query(None, alias="range"),
limit: int = 50,
offset: int = 0,
):
limit = max(1, min(200, int(limit)))
offset = max(0, int(offset))
since: _dt.datetime | None = None
if range_ and range_ in _RANGE_MAP:
since = _dt.datetime.utcnow() - _dt.timedelta(days=_RANGE_MAP[range_])
rows = await _A.list_artifacts(
kind=kind, tool_name=tool, since=since, limit=limit, offset=offset,
)
return {"items": [_serialize(r) for r in rows], "limit": limit, "offset": offset}
Co-authored-by: erinepshovel-code <250928284+erinepshovel-code@users.noreply.github.com>
Comment thread python/services/energy_registry.py Fixed
Comment thread python/services/energy_registry.py Fixed
Comment thread python/services/energy_registry.py Fixed
Comment thread python/services/gemini_native.py Fixed
Comment thread tests/test_skills.py Fixed
Comment thread python/services/tool_executor.py Fixed
Comment thread tests/test_route_imports.py Fixed
Comment thread python/services/energy_registry.py Fixed
@erinepshovel-code

Copy link
Copy Markdown
Collaborator Author

@copilot apply changes based on the comments in this thread

Copilot AI and others added 2 commits May 4, 2026 02:19
Co-authored-by: erinepshovel-code <250928284+erinepshovel-code@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 4, 2026 02:19

Copilot AI commented May 4, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Merge conflicts resolved in commit 534ce9dd. Merged origin/main into replit-agent, resolving all 44 conflicted files. Since origin/main already contained all of our branch's changes plus additional improvements (new routes, UI components, etc.), conflicts were resolved by taking origin/main's more complete versions.

…tion or class'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fcec4da596

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"Failed to persist active provider to DB; keeping in-memory selection.",
exc_info=True,
)
await session.execute(

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0 Badge Fix unexpected indent in provider persistence path

The new block in set_active_provider_persistent leaves await session.execute(...) at an invalid indentation level and no longer wraps it in async with get_session() as session. This now raises IndentationError when python/services/energy_registry.py is imported, which prevents the service from starting and breaks every code path that imports this module.

Useful? React with 👍 / 👎.

@erinepshovel-code
erinepshovel-code merged commit 19da4cc into main May 4, 2026
4 of 5 checks passed
@erinepshovel-code
erinepshovel-code deleted the replit-agent branch May 4, 2026 02:22

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +180 to 184
logger.warning(
"Failed to persist active provider to DB; keeping in-memory selection.",
exc_info=True,
)
await session.execute(
Comment on lines +76 to 78
Validates tool metadata at boot, including canonical side-effects.
Enforces: any tool with "security_active" in side_effects must declare a
non-None approval_scope (gates offensive tooling by construction)."""
Comment on lines +180 to +183
logger.warning(
"Failed to persist active provider to DB; keeping in-memory selection.",
exc_info=True,
)
Copilot stopped work on behalf of erinepshovel-code due to an error May 4, 2026 02:22

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f4cd4287e2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"Failed to persist active provider to DB; keeping in-memory selection.",
exc_info=True,
)
await session.execute(

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0 Badge Restore valid indentation in persistence block

The newly inserted logger.warning(...) leaves await session.execute(...) at an unexpected indentation level, which raises IndentationError when python/services/energy_registry.py is imported. This prevents the module from loading and breaks any runtime path that imports the energy registry, so the service cannot start successfully until this block is re-indented into a valid async with get_session() scope.

Useful? React with 👍 / 👎.

@erinepshovel-code

Copy link
Copy Markdown
Collaborator Author

@copilot apply changes based on the comments in this thread

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants