Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
ebee145
refactor(agent): make runAgent a function with progress and interacti…
gewenyu99 Sep 21, 2026
ee39d2c
chore(test): keep the architecture test, record the adapter edges
gewenyu99 Sep 21, 2026
f7fe0fa
chore(agent): drop the authenticate move and the README rewrite from …
gewenyu99 Sep 21, 2026
b0a4c1e
fix(agent): preserve runner boundary parity
gewenyu99 Sep 21, 2026
dbfbfff
fix(agent): pause writes during pending questions
gewenyu99 Sep 21, 2026
d214216
test(agent): preserve question wait behavior
gewenyu99 Sep 21, 2026
a778bcd
docs(agent): add runner boundary diagram
gewenyu99 Sep 22, 2026
c001f46
docs(agent): remove diagram image
gewenyu99 Sep 22, 2026
3be61a8
refactor(errors): move WizardError next to the error codes
gewenyu99 Sep 22, 2026
9ce7899
refactor(agent): own the progress payload types
gewenyu99 Sep 22, 2026
f15dc7a
refactor(agent): own the outro, question and task-notice shapes
gewenyu99 Sep 22, 2026
53bddf8
refactor(programs): split ProgramRun into the agent definition and th…
gewenyu99 Sep 22, 2026
54f8e4b
refactor(programs): move authenticate and the token refresh to programs
gewenyu99 Sep 22, 2026
85ed50e
refactor(shared): name program documents and the audit ledger outside…
gewenyu99 Sep 22, 2026
a88c581
refactor(shared): move the Node package-manager detector next to its …
gewenyu99 Sep 22, 2026
0b98bd3
refactor(middleware): report benchmark lines as progress events
gewenyu99 Sep 22, 2026
856b613
refactor(yara): return the scan report line instead of printing it
gewenyu99 Sep 22, 2026
13fa0a2
refactor(agent): publish the handoff as a progress event
gewenyu99 Sep 22, 2026
5cffae6
build(lint): fence the agent's imports
gewenyu99 Sep 22, 2026
2b8c672
refactor(shared): move utilities into shared
gewenyu99 Sep 22, 2026
8210a64
refactor(shared): move library utilities and health checks into shared
gewenyu99 Sep 22, 2026
0de7b0b
refactor(shared): move settings pricing and phase helpers out of agent
gewenyu99 Sep 22, 2026
719737a
refactor(agent): move agent execution into its own source tree
gewenyu99 Sep 22, 2026
273cd0e
docs: update agent and shared source paths
gewenyu99 Sep 22, 2026
580c506
refactor(shared): move the skill menu out of the agent
gewenyu99 Sep 22, 2026
6484ce1
build(agent): publish the agent through entry modules
gewenyu99 Sep 22, 2026
9f0d4c4
refactor(shared): stop shared code from reaching upward
gewenyu99 Sep 22, 2026
49614fb
docs: describe the agent and shared surfaces
gewenyu99 Sep 22, 2026
67ece68
docs(agent): name what stays in the entry modules and what leaves
gewenyu99 Sep 22, 2026
3e2f1be
docs(agent): skill install leaves with Release B, not a separate stage
gewenyu99 Sep 22, 2026
c620d09
docs(agent): group the entry exports by when they leave
gewenyu99 Sep 22, 2026
889af71
test(agent): cover public prompt streaming entry
gewenyu99 Sep 22, 2026
3ae7846
refactor(programs): move program surface and TUI decks
gewenyu99 Sep 22, 2026
2aee250
fix(agent): propagate terminal failures and cancel sibling work
gewenyu99 Sep 23, 2026
1a040d0
Propagate agentic detection failures
gewenyu99 Sep 23, 2026
1443587
test(agent): probe terminal SDK fault propagation
gewenyu99 Sep 23, 2026
4f1940d
Fix program ownership and architecture boundaries
gewenyu99 Sep 23, 2026
429576f
Merge A3 review fixes into B1
gewenyu99 Sep 23, 2026
1d40129
chore(programs): sync B1 with the A3 terminal-failure fix
gewenyu99 Sep 23, 2026
8325ad3
Merge latest A3 agent outcomes into B1 review fixes
gewenyu99 Sep 23, 2026
7068bd3
style(agent): format orchestrator error import
gewenyu99 Sep 23, 2026
8ba069a
chore(programs): merge the remote B1 review fixes into the restacked B1
gewenyu99 Sep 23, 2026
cc78e9f
Merge main into posthog/functional-a1-min
gewenyu99 Sep 23, 2026
690bdc0
fix(agent): give each ask its own cancel signal and leave analytics s…
gewenyu99 Sep 23, 2026
0cf68a2
Merge posthog/functional-a1-min into posthog/functional-a2a-edges
gewenyu99 Sep 23, 2026
ec048f7
Merge posthog/functional-a2a-edges into workbench/wizard-functional-a2b
gewenyu99 Sep 23, 2026
da08b1c
Merge workbench/wizard-functional-a2b into posthog/functional-a3-entries
gewenyu99 Sep 23, 2026
c84b5de
fix(programs): keep a successful run successful when its analytics fl…
gewenyu99 Sep 23, 2026
112fce5
Merge posthog/functional-a1-min into posthog/functional-a2a-edges
gewenyu99 Sep 23, 2026
b4b4621
Merge posthog/functional-a2a-edges into workbench/wizard-functional-a2b
gewenyu99 Sep 23, 2026
62c4387
fix(agent): label decided failures as errors and cancel open asks whe…
gewenyu99 Sep 23, 2026
200961f
Merge workbench/wizard-functional-a2b into posthog/functional-a3-entries
gewenyu99 Sep 23, 2026
beb3a04
Merge posthog/functional-a3-entries into posthog/functional-b1-pr
gewenyu99 Sep 23, 2026
0ceca0b
docs: correct stage comments, the shared README and the detection run…
gewenyu99 Sep 23, 2026
dcf418a
fix(lint): fence directory imports out of the agent too
gewenyu99 Sep 23, 2026
3c7dfb5
test(agent): cover the handoff, benchmark and scan-summary wiring
gewenyu99 Sep 23, 2026
34cab6b
Merge posthog/functional-a2a-edges into workbench/wizard-functional-a2b
gewenyu99 Sep 23, 2026
f4b3417
Merge workbench/wizard-functional-a2b into posthog/functional-a3-entries
gewenyu99 Sep 23, 2026
38f57e8
fix(agent): report the scan summary when a run is cancelled before it…
gewenyu99 Sep 23, 2026
0d80f8d
Merge posthog/functional-a3-entries into posthog/functional-b1-pr
gewenyu99 Sep 23, 2026
ea1c5f6
Merge main into posthog/functional-a1-min
gewenyu99 Sep 23, 2026
c26e22d
Merge posthog/functional-a1-min into posthog/functional-a2a-edges
gewenyu99 Sep 23, 2026
c89ad5a
Merge posthog/functional-a2a-edges into workbench/wizard-functional-a2b
gewenyu99 Sep 23, 2026
9eb5375
Merge workbench/wizard-functional-a2b into posthog/functional-a3-entries
gewenyu99 Sep 23, 2026
91bc9b5
Merge main into posthog/functional-a1-min
gewenyu99 Sep 23, 2026
d81afb9
Merge posthog/functional-a1-min into posthog/functional-a2a-edges
gewenyu99 Sep 23, 2026
ae7d08a
Merge posthog/functional-a2a-edges into workbench/wizard-functional-a2b
gewenyu99 Sep 23, 2026
bfe4c8e
Merge workbench/wizard-functional-a2b into posthog/functional-a3-entries
gewenyu99 Sep 23, 2026
446562f
Merge posthog/functional-a3-entries into posthog/functional-b1-pr
gewenyu99 Sep 24, 2026
edbf1f9
docs(shared): analytics reads the session until C2a
gewenyu99 Sep 24, 2026
7f8f045
refactor(shared): move cleanup, scan consent, run tags and ask policy…
gewenyu99 Sep 24, 2026
57f1a82
refactor(shared): move the OAuth token helpers into oauth-token
gewenyu99 Sep 24, 2026
acecf6b
refactor(shared): move the gateway bearer type and checks into gatewa…
gewenyu99 Sep 24, 2026
1eb4fe5
refactor(shared): move the JSON file watcher into shared
gewenyu99 Sep 24, 2026
0eb5f73
refactor(shared): move the self-driving pricing copy into shared
gewenyu99 Sep 24, 2026
aed5499
refactor(agent): move the wizard-tools names into tool-names
gewenyu99 Sep 24, 2026
3215137
refactor(programs): move program run data into run and abort-case mod…
gewenyu99 Sep 24, 2026
6b60093
Merge main into posthog/functional-b1-pr
gewenyu99 Sep 24, 2026
9fea057
Merge posthog/functional-b1-pr into posthog/functional-b2-move
gewenyu99 Sep 24, 2026
793a34f
refactor(programs): own binding policy and experiment selection
gewenyu99 Sep 24, 2026
09c681b
refactor(agent): move the harness resolver into resolve-harness
gewenyu99 Sep 24, 2026
ef5ee43
refactor(programs): move the sequence precedence into binding
gewenyu99 Sep 24, 2026
bc7101a
refactor(runners): move the legacy program adapter into runners
gewenyu99 Sep 24, 2026
b0afe6b
revert(b1): restore the original B1 tree, dropping the folded-in B2a …
gewenyu99 Sep 24, 2026
aac6ed8
Merge main into posthog/functional-b1-pr
gewenyu99 Sep 25, 2026
7360d30
test(architecture): name the callers, not hosts
gewenyu99 Sep 25, 2026
7a14047
refactor(programs): keep B1 to moves: bindings notes and the detectio…
gewenyu99 Sep 25, 2026
00b94e6
Merge main into posthog/functional-b1-pr
gewenyu99 Sep 25, 2026
3991926
refactor(programs): move FRAMEWORK_REGISTRY into frameworks/
gewenyu99 Sep 25, 2026
6677a15
Merge main into posthog/functional-b1-pr
gewenyu99 Sep 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 12 additions & 12 deletions .claude/skills/adding-framework-support/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,44 +20,44 @@ creating its own runner or changing existing routing defaults.

## Extend the framework configuration

Start with [FrameworkConfig](../../../src/lib/framework-config.ts) and a nearby
example under [src/frameworks](../../../src/frameworks/). Framework-specific
Start with [FrameworkConfig](../../../src/programs/framework-config.ts) and a nearby
example under [src/programs/frameworks](../../../src/programs/frameworks/). Framework-specific
detection, context, environment conventions, and UI metadata belong here.
Integration instructions and examples belong in context-mill.

1. Add the integration to [Integration](../../../src/shared/constants.ts). Its
order controls first-match detection and the framework picker. Keep specific
frameworks before language fallbacks and generic Node last; preserve the
overlap rules in the
[detection checks](../../../src/lib/detection/__tests__/framework.test.ts).
2. Add the config under `src/frameworks/<name>/<name>-wizard-agent.ts`. Use a
[detection checks](../../../src/programs/detection/__tests__/framework.test.ts).
2. Add the config under `src/programs/frameworks/<name>/<name>-wizard-agent.ts`. Use a
`type` for framework context so it satisfies `Record<string, unknown>`.
Export the config; the integration program already supplies execution.
3. Import the config into [FRAMEWORK_REGISTRY](../../../src/lib/registry.ts).
3. Import the config into [FRAMEWORK_REGISTRY](../../../src/programs/frameworks/registry.ts).
The display label comes from `metadata.name`.

Read the current interface for the complete required fields. In particular,
`detection.detectPackageManager` is required: reuse an adapter from
[package-manager detection](../../../src/lib/detection/package-manager.ts). Use
[package-manager detection](../../../src/programs/detection/package-manager.ts). Use
`metadata.setup.questions` for unresolved project variants; `gatherContext`
collects framework context. Optional notices and extra MCP servers also belong
in metadata.

Use `usesPackageJson: false` for frameworks without a package.json dependency.
Their required `getVersion` callback can return `undefined`. Minimum-version
checking requires both `minimumVersion` and `getInstalledVersion`; unknown
versions pass. [Context detection](../../../src/lib/detection/context.ts)
versions pass. [Context detection](../../../src/programs/detection/context.ts)
returns unsupported-version data for the integration UI rather than aborting
itself.

## Detection and examples

| Starting point | Pattern to reuse |
| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| [Next.js](../../../src/frameworks/nextjs/) | `hasDeclaredDependency` from `utils/package-json`, `tryGetPackageJson` from `utils/setup-utils`, and router setup questions |
| [Django](../../../src/frameworks/django/) | Python project files, context gathering, and Python package-manager detection |
| [Laravel](../../../src/frameworks/laravel/) | Composer and framework-specific filesystem signals |
| [Rails](../../../src/frameworks/rails/) | Gemfile detection and Ruby conventions |
| [Next.js](../../../src/programs/frameworks/nextjs/) | `hasDeclaredDependency` from `utils/package-json`, `tryGetPackageJson` from `utils/setup-utils`, and router setup questions |
| [Django](../../../src/programs/frameworks/django/) | Python project files, context gathering, and Python package-manager detection |
| [Laravel](../../../src/programs/frameworks/laravel/) | Composer and framework-specific filesystem signals |
| [Rails](../../../src/programs/frameworks/rails/) | Gemfile detection and Ruby conventions |

Use [bounded filesystem helpers](../../../src/shared/utils/bounded-fs.ts) for project
scans and reads. They bound traversal and skip dependency/build directories; add
Expand Down Expand Up @@ -88,7 +88,7 @@ content-mill variants. For an end-to-end run, use a disposable test app and the
[exploration guide](../exploring-the-wizard/SKILL.md).

For prompt, environment-upload, or outro changes, inspect the current
[integration program](../../../src/lib/programs/posthog-integration/) and the
[integration program](../../../src/programs/posthog-integration/) and the
selected sequence. Some fields remain in the interface without a current
consumer: `getOutroNextSteps` is not used by the integration outro. Linear
post-run/outro hooks are not shared by the orchestrator; see the
Expand Down
28 changes: 14 additions & 14 deletions .claude/skills/adding-skill-program/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ them.
[Context-mill](https://github.com/PostHog/context-mill) owns skill content and
`cliEntries`. A new skill-backed child of an existing family ships through
context-mill; inspect
[family dispatch](../../../src/lib/programs/dispatch-family.ts). Unpromoted
[family dispatch](../../../src/programs/dispatch-family.ts). Unpromoted
skills run through [the skill command](../../../src/commands/skill.ts).
- **Native program:** use a
[ProgramConfig](../../../src/lib/programs/program-step.ts) when the wizard
[ProgramConfig](../../../src/programs/program-step.ts) when the wizard
needs its own flow, screens, detection, composition, or other native behavior.
Keep product instructions in context-mill.

Expand All @@ -45,12 +45,12 @@ is `id`, not the retired `flowKey`.

## Build a native orchestrator program

Use [metrics](../../../src/lib/programs/metrics/) as the current Pi/orchestrator
Use [metrics](../../../src/programs/metrics/) as the current Pi/orchestrator
example and read the
[runner architecture](../wizard-development/references/ARCHITECTURE.md) when
changing execution behavior.

1. Add the program config under `src/lib/programs/<name>/`. Set `agentFlow` when
1. Add the program config under `src/programs/<name>/`. Set `agentFlow` when
its content-mill flow differs from `id`; setting it explicitly also documents
the content dependency. Keep a `run` definition so the outer runner executes
agent work.
Expand All @@ -60,7 +60,7 @@ changing execution behavior.
loads `agentFlow ?? id`, requires a seed prompt, and checks task-skill
variants before running. `run.skillId` alone does not define this flow.
3. Register the config in
[PROGRAM_REGISTRY](../../../src/lib/programs/program-registry.ts) and add its
[PROGRAM_REGISTRY](../../../src/programs/program-registry.ts) and add its
Pi/orchestrator entry to
[PROGRAM_BINDINGS](../../../src/agent/runner/switchboard/index.ts).
[Existing binding checks](../../../src/agent/runner/__tests__/switchboard.test.ts)
Expand All @@ -70,7 +70,7 @@ changing execution behavior.
and register it in [bin.ts](../../../bin.ts). A native family child uses the
handlers in family dispatch. Program registration derives screen sequences
and store lookup, not the top-level CLI `.use()` chain.
5. Check [program OAuth scopes](../../../src/lib/oauth/program-scopes.ts)
5. Check [program OAuth scopes](../../../src/programs/oauth/program-scopes.ts)
against the tools the program needs; add scopes only when the base set is
insufficient.

Expand All @@ -82,13 +82,13 @@ or changing gateway-required prompt material.
## Simple linear programs and existing flows

For a very simple linear flow, use
[createSkillProgram](../../../src/lib/programs/agent-skill/index.ts) to
[createSkillProgram](../../../src/programs/agent-skill/index.ts) to
configure installation of one skill. Register the native program as above with
an explicit Pi/linear binding; the factory does not select a sequence. Read
`SkillProgramOptions` for required fields;
[audit](../../../src/lib/programs/audit/) demonstrates factory customization and
[audit](../../../src/programs/audit/) demonstrates factory customization and
a dynamic `run(session)` that seeds a ledger.
[Revenue analytics](../../../src/lib/programs/revenue-analytics/) builds its
[Revenue analytics](../../../src/programs/revenue-analytics/) builds its
config directly and adds prerequisite detection.

`ProgramRun.customPrompt`, `abortCases`, `postRun`, and `buildOutroData` are
Expand All @@ -102,9 +102,9 @@ does not preserve these behaviors automatically.

## Screens, prerequisites, and composition

Reuse [AGENT_SKILL_STEPS](../../../src/lib/programs/agent-skill/steps.ts):
Reuse [AGENT_SKILL_STEPS](../../../src/programs/agent-skill/steps.ts):
intro, health check, auth, run, outro, and keep-skills. Auth also applies the
shared [AI opt-in gate](../../../src/lib/programs/ai-opt-in-gate.ts) for agent
shared [AI opt-in gate](../../../src/programs/ai-opt-in-gate.ts) for agent
programs. Override `screenId`, not `screen`, when adapting a step. New screens
need an entry in [ScreenId](../../../src/ui/tui/screen-sequences.ts), a
component, and registration in
Expand All @@ -123,12 +123,12 @@ prerequisite strategy.
`requires` currently records metadata; it does not execute or enforce prior
programs. Compose real work through `ProgramStep.run`, with `onRunPrep` and
`targetDir` when needed. The
[integration run step](../../../src/lib/programs/posthog-integration/index.ts)
and [self-driving](../../../src/lib/programs/self-driving/) demonstrate this.
[integration run step](../../../src/programs/posthog-integration/index.ts)
and [self-driving](../../../src/programs/self-driving/) demonstrate this.
Composed sub-runs are structurally linear; orchestrators cannot nest. A host run
step without `run` can also set `targetDir` and `onRunPrep` to scope the
program's own agent to a picked project and keep its sequence, as
[error-tracking](../../../src/lib/programs/error-tracking/) does.
[error-tracking](../../../src/programs/error-tracking/) does.

## Validate the affected path

Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/exploring-the-wizard/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,5 +129,5 @@ The shared log is `/tmp/posthog-wizard.log`. Record its byte count before a run
and read from that count plus one afterward. Run sweeps serially so their logs
remain attributable. `read_state` omits `frameworkContext`; an empty
`setupQuestions` list alone does not prove a router mode. When necessary,
inspect the detector under [`src/frameworks/`](../../../src/frameworks/) against
inspect the detector under [`src/programs/frameworks/`](../../../src/programs/frameworks/) against
the same fixture.
2 changes: 1 addition & 1 deletion .claude/skills/ink-tui/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ conventions rather than copying upstream component manuals.
3. Register the component in
[screen-registry.tsx](../../../src/ui/tui/screen-registry.tsx).
4. Reference it through `screenId` in the owning
[program's steps](../../../src/lib/programs/), with the appropriate
[program's steps](../../../src/programs/), with the appropriate
visibility, completion, and gate predicates.

Screen sequences derive from program steps. Do not hand-maintain a second
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/ink-tui/references/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
| Surface | Owns |
| ----------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| [WizardSession](../../../../src/lib/wizard-session.ts) | Run configuration, decisions, credentials, and lifecycle state |
| [ProgramStep](../../../../src/lib/programs/program-step.ts) | Screens, visibility/completion predicates, gates, and initialization hooks |
| [ProgramStep](../../../../src/programs/program-step.ts) | Screens, visibility/completion predicates, gates, and initialization hooks |
| [screen-sequences.ts](../../../../src/ui/tui/screen-sequences.ts) | `ScreenId`, `Screen`, `Sequence`, and the derived `PROGRAM_SEQUENCES` |
| [WizardRouter](../../../../src/ui/tui/router.ts) | Resolution and the `Overlay` stack |
| [WizardStore](../../../../src/ui/tui/store.ts) | Reactive state, gate promises, display observations, and pending interactions |
Expand All @@ -17,7 +17,7 @@
entries: `id`, `show`, and `isComplete`. Completion defaults to the step's
`gate` when no separate `isComplete` is provided. Steps without a screen are
omitted, and the exit screen is appended. The projection applies
[withAiOptInGate](../../../../src/lib/programs/ai-opt-in-gate.ts) consistently
[withAiOptInGate](../../../../src/programs/ai-opt-in-gate.ts) consistently
with store gate creation.

`WizardRouter.resolve(session)` first checks the overlay stack, then returns the
Expand Down
6 changes: 3 additions & 3 deletions .claude/skills/wizard-development/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ infrastructure should consume those boundaries.

| Concern | Owner |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Framework detection, context, env conventions | [FrameworkConfig](../../../src/lib/framework-config.ts) and [framework configs](../../../src/frameworks/) |
| Framework detection, context, env conventions | [FrameworkConfig](../../../src/programs/framework-config.ts) and [framework configs](../../../src/programs/frameworks/) |
| Integration instructions and orchestrator flows/tasks | [context-mill](https://github.com/PostHog/context-mill) |
| Programs, steps, prerequisites and outcomes | [programs](../../../src/lib/programs/) |
| Programs, steps, prerequisites and outcomes | [programs](../../../src/programs/) |
| Sequence, harness, model and effort selection | [switchboard](../../../src/agent/runner/switchboard/) |
| Local tool permissions and scanner adapters | [agent-interface](../../../src/agent/agent-interface.ts), [YARA hooks](../../../src/agent/yara-hooks.ts), [Pi security](../../../src/agent/runner/harness/pi/security.ts) |
| Scanner rules | [warlock](https://github.com/PostHog/warlock) |
Expand All @@ -34,7 +34,7 @@ infrastructure should consume those boundaries.
are separate: Pi supports gateway-backed Anthropic and OpenAI transports.
- **Prefer orchestration.** A seed agent plans work, then task agents execute
focused conversations. Start from
[metrics](../../../src/lib/programs/metrics/) and its context-mill flow.
[metrics](../../../src/programs/metrics/) and its context-mill flow.
- **Linear is for very simple tasks and legacy support.** Composed program
sub-runs are also structurally clamped to linear; orchestration cannot nest
through that seam.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ signatures.

Do not migrate a linear program merely by changing its binding if it depends on
these hooks. Inspect the orchestrator's flow and completion path instead.
[Metrics](../../../../src/lib/programs/metrics/) is a current Pi/orchestrator
[Metrics](../../../../src/programs/metrics/) is a current Pi/orchestrator
example. Native command modules still need registration in
[bin.ts](../../../../bin.ts); screen sequences derive from the program registry.

Expand Down
11 changes: 4 additions & 7 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ module.exports = {
// The agent surface. It takes resolved data in, reports through
// progress events and asks through an injected answerer, so nothing
// here may import a UI, the session, detection, the CLI or a program.
// Only direct static imports are checked. Program types stay importable
// until B1 moves PROGRAM_BINDINGS to programs.
// Only direct static imports are checked. ProgramId remains a type-only
// exception until PROGRAM_BINDINGS moves to programs.
files: ['src/agent/**/*.ts'],
excludedFiles: ['**/__tests__/**'],
rules: {
Expand Down Expand Up @@ -64,9 +64,7 @@ module.exports = {
'**/ui',
'**/ui/**',
'@lib/**',
'!@lib/programs/**',
'**/lib/**',
'!**/lib/programs/**',
'**/wizard-session',
'**/detection',
'**/detection/**',
Expand All @@ -77,7 +75,6 @@ module.exports = {
'@steps/**',
'**/steps',
'**/steps/**',
'@frameworks/**',
'**/frameworks/**',
'@utils/setup-utils',
'@shared/utils/setup-utils',
Expand All @@ -90,10 +87,10 @@ module.exports = {
'The agent reports through progress events and asks through AgentInteraction; it takes everything else through RunConfig and RunInput.',
},
{
group: ['@lib/programs/**', '**/programs/**'],
group: ['@programs', '@programs/**', '**/programs/**'],
allowTypeImports: true,
message:
'The agent takes program data through RunConfig. Types only, until B1 moves PROGRAM_BINDINGS to programs.',
'The agent takes program data through RunConfig. ProgramId types remain until PROGRAM_BINDINGS moves to programs.',
},
],
},
Expand Down
Loading
Loading