You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge latest main into the testing architecture cleanup.
Keep resume, reporting, scheduler, and Slack tests aligned with current testing policy.
Co-Authored-By: GPT-5 Codex <codex@openai.com>
Copy file name to clipboardExpand all lines: AGENTS.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -61,6 +61,7 @@ Co-Authored-By: (agent model name) <email>
61
61
62
62
-`policies/README.md` (when to add a policy doc and how policy docs should stay scoped)
63
63
-`policies/code-comments.md` (repo default for code comments, docstrings, and exported-function JSDoc)
64
+
-`policies/context-bound-systems.md` (explicit actor/destination/context propagation across runtime boundaries)
64
65
-`policies/evals.md` (evals as behavior integration tests and rubric authoring boundaries)
65
66
-`policies/frontend-components.md` (Tailwind colocation and component-owned frontend styling)
66
67
-`policies/interface-design.md` (naming, module paths, and minimal interface boundaries)
@@ -85,7 +86,7 @@ Co-Authored-By: (agent model name) <email>
85
86
- Do not leak third-party SDK types across chat subsystem boundaries when a small local interface will do; keep vendor SDKs inside infrastructure modules.
86
87
- Service modules must depend on small injected ports for Slack behavior, not import Slack infrastructure directly.
87
88
- Slack modules must not import runtime modules.
88
-
-`runtime/` orchestrates turns and turn-scoped formatting, `services/` do domain work (reply policy, delivery planning, channel intent, attachment validation), `state/` persists by concern, `ingress/` only normalizes/routes.
89
+
-`runtime/` orchestrates turns and turn-scoped formatting, `services/` do domain work (reply policy, delivery planning, channel intent, attachment validation), `state/` persists by concern, `ingress/` only parses, classifies, and routes source events.
89
90
-**Feature-based colocation**: group files by domain feature, not by technical role. Within a module, create subdirectories for each feature domain (e.g., `tools/slack/`, `tools/web/`, `tools/sandbox/`, `tools/skill/`). Shared contracts and cross-cutting utilities live at the module root. Only extract to a shared location when 2+ features need the same code.
90
91
- Do not use barrel `index.ts` re-exports inside feature subdirectories — import directly from the source file. A module-root `index.ts` is acceptable as a composition root that wires features together.
91
92
- Queue and worker paths must depend on injected runtime interfaces or factories, not import the production singleton from `@/chat/app/production`.
@@ -115,6 +116,7 @@ Co-Authored-By: (agent model name) <email>
115
116
-`specs/agent-turn-handling.md` (agent user-message response policy: reply/silence, tool use, Slack side effects, resumed turns, and completion)
The dashboard UI is a React client using React Router for browser views and TanStack Query to poll dashboard APIs. `/` shows command-center healthand recent turn durations; `/conversations` shows conversation history; `/conversations/:conversation` shows the transcript and turn/tool-call detail for one conversation. The dashboard does not wrap Slack webhooks, provider OAuth callbacks, sandbox egress, or `/api/internal/*`.
105
+
The dashboard UI is a React client using React Router for browser views and TanStack Query to poll dashboard APIs. `/` shows command-center health, aggregate conversation stats, and recent turn durations; `/conversations` shows conversation history; `/conversations/:conversation` shows the transcript and turn/tool-call detail for one conversation; `/plugins` shows loaded plugin inventory and trusted plugin operational summaries. The dashboard does not wrap Slack webhooks, provider OAuth callbacks, sandbox egress, or `/api/internal/*`.
103
106
The conversation feed is a bounded metadata index with the same expiration policy as turn-session checkpoints. Conversation detail reads transcript data from the expiring checkpoint message store, so old transcripts disappear when checkpoint state expires. When `SENTRY_DSN` initializes the runtime and `SENTRY_ORG_SLUG` is set, conversation rows include a Sentry conversation link; when the runtime captures a trace ID, conversation detail shows it with the turn metadata.
107
+
The conversation stats endpoint is separate from the recent feed and includes `sampleLimit`, `sampleSize`, and `truncated` fields so the UI can mark bounded aggregates.
104
108
Dashboard dates use `JUNIOR_TIMEZONE`, defaulting to `America/Los_Angeles`.
105
109
106
110
For local dashboard visual QA, pass `mockConversations: true` to `juniorDashboardPlugin()` or set `JUNIOR_DASHBOARD_MOCK_CONVERSATIONS=true` for the env-configured path. The sample conversations are read-only reporting fixtures and appear before real session records.
Copy file name to clipboardExpand all lines: packages/docs/src/content/docs/reference/config-and-env.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,7 @@ related:
19
19
|`REDIS_URL`| Yes | Queue and runtime state storage. |
20
20
|`JUNIOR_SECRET`| Yes | Signs internal timeout-resume and agent-dispatch callbacks, plus sandbox egress requester context. |
21
21
|`JUNIOR_BOT_NAME`| No | Bot display/config naming. |
22
+
|`JUNIOR_SLASH_COMMAND`| No | Slack slash command for account-management flows. Defaults to `/jr`; the Slack app command must match this value. |
22
23
|`AI_MODEL`| No | Primary model selection override for main assistant turns. Defaults to `openai/gpt-5.4`; Junior chooses the reasoning effort per turn automatically. |
23
24
|`AI_FAST_MODEL`| No | Faster model for lightweight tasks and routing/classification passes before the main turn begins. Defaults to `openai/gpt-5.4-mini`. |
Copy file name to clipboardExpand all lines: packages/docs/src/content/docs/start-here/slack-app-setup.md
+14-14Lines changed: 14 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,16 +34,16 @@ Use `SLACK_BOT_TOKEN` for normal bot replies. Use `SLACK_BOT_USER_TOKEN` only wh
34
34
35
35
Grant the smallest scopes that cover the Slack features you enable. A typical Junior installation needs scopes for mentions, posting replies, reading thread context, reactions, user lookup, file workflows, and slash command handling.
0 commit comments