@event4u/agent-config 4.1.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +51 -0
- package/README.md +3 -2
- package/dist/cli/agent-config.js +9 -0
- package/dist/cli/agent-config.js.map +1 -1
- package/dist/cli/commands/uiServe.js +1 -1
- package/dist/cli/commands/uiServe.js.map +1 -1
- package/dist/cli/initRouting.js +101 -0
- package/dist/cli/initRouting.js.map +1 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +1 -1
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +1 -1
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +1 -1
- package/dist/mcp/registry-manifest.json +1 -1
- package/dist/server/routes/install.js +11 -200
- package/dist/server/routes/install.js.map +1 -1
- package/dist/server/routes/wizard.js +167 -26
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/schemas/settings.js +1 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/ui/assets/index-BDAhhpDV.js +40 -0
- package/dist/ui/assets/index-BDAhhpDV.js.map +1 -0
- package/dist/ui/index.html +1 -1
- package/docs/contracts/gui-wizard.md +116 -96
- package/docs/decisions/ADR-021-deployment-shape.md +2 -2
- package/docs/deploy/connector-setup.md +2 -2
- package/docs/deploy/policy-cookbook.md +2 -2
- package/package.json +1 -1
- package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
- package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
- package/scripts/install.py +197 -34
- package/scripts/lint_framework_leakage_allowlist.json +8 -0
- package/dist/install/apply.js +0 -238
- package/dist/install/apply.js.map +0 -1
- package/dist/install/bridges/augment.js +0 -20
- package/dist/install/bridges/augment.js.map +0 -1
- package/dist/install/bridges/claude.js +0 -44
- package/dist/install/bridges/claude.js.map +0 -1
- package/dist/install/bridges/cline.js +0 -69
- package/dist/install/bridges/cline.js.map +0 -1
- package/dist/install/bridges/copilot.js +0 -28
- package/dist/install/bridges/copilot.js.map +0 -1
- package/dist/install/bridges/cursor.js +0 -34
- package/dist/install/bridges/cursor.js.map +0 -1
- package/dist/install/bridges/gemini.js +0 -39
- package/dist/install/bridges/gemini.js.map +0 -1
- package/dist/install/bridges/index.js +0 -88
- package/dist/install/bridges/index.js.map +0 -1
- package/dist/install/bridges/marker-content.js +0 -153
- package/dist/install/bridges/marker-content.js.map +0 -1
- package/dist/install/bridges/markers.js +0 -42
- package/dist/install/bridges/markers.js.map +0 -1
- package/dist/install/bridges/types.js +0 -31
- package/dist/install/bridges/types.js.map +0 -1
- package/dist/install/bridges/vscode.js +0 -26
- package/dist/install/bridges/vscode.js.map +0 -1
- package/dist/install/bridges/windsurf.js +0 -35
- package/dist/install/bridges/windsurf.js.map +0 -1
- package/dist/ui/assets/index-DLEuEW1V.js +0 -35
- package/dist/ui/assets/index-DLEuEW1V.js.map +0 -1
package/dist/ui/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
6
|
<meta name="robots" content="noindex" />
|
|
7
7
|
<title>agent-config</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-BDAhhpDV.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-BXZILUxe.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
@@ -8,20 +8,27 @@ keep-beta-until: 2026-08-19
|
|
|
8
8
|
> Companion to the agent-mode protocol
|
|
9
9
|
> ([`installer-agent-mode.md`](installer-agent-mode.md)) and the
|
|
10
10
|
> trust-and-safety layer ([`trust-and-safety.md`](trust-and-safety.md)).
|
|
11
|
-
> The wizard is a thin HTTP wrapper
|
|
12
|
-
>
|
|
13
|
-
>
|
|
14
|
-
>
|
|
15
|
-
> picker.
|
|
11
|
+
> The wizard is a thin HTTP wrapper: it is a **selection front-end**, and
|
|
12
|
+
> every real write goes through the single installer
|
|
13
|
+
> `scripts/install.py --apply-payload` (D12 / ADR-020). It is **optional by
|
|
14
|
+
> design** — the CLI is the canonical entry point; the wizard exists for
|
|
15
|
+
> non-technical users who want a visual picker.
|
|
16
16
|
|
|
17
17
|
## Source of truth
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
19
|
+
The GUI is a Fastify server (`src/server/`) serving a Preact SPA
|
|
20
|
+
(`src/ui/`), booted by the `install` / `setup` / `ui:serve` CLI
|
|
21
|
+
subcommands. The legacy `packages/core/installer/src/gui/*` tree was
|
|
22
|
+
retired; the single real installer is `scripts/install.py`.
|
|
23
|
+
|
|
24
|
+
- Server app + security hooks: [`src/server/app.ts`](../../src/server/app.ts) (Host allow-list, Origin allow-list, CSRF token — `onRequest` hooks)
|
|
25
|
+
- Wizard routes (incl. the real-apply bridge): [`src/server/routes/wizard.ts`](../../src/server/routes/wizard.ts)
|
|
26
|
+
- Read-only install routes (detect / plan-preview / recovery / legacy-v3): [`src/server/routes/install.ts`](../../src/server/routes/install.ts)
|
|
27
|
+
- Atomic / 2PC writes: [`src/server/io/atomicWrite.ts`](../../src/server/io/atomicWrite.ts), [`atomicMultiWrite.ts`](../../src/server/io/atomicMultiWrite.ts)
|
|
28
|
+
- SPA: [`src/ui/`](../../src/ui/) (entry `src/ui/pages/WizardPage.tsx`)
|
|
29
|
+
- CLI boot + `WIZARD_READY` contract: [`src/cli/commands/uiServe.ts`](../../src/cli/commands/uiServe.ts)
|
|
30
|
+
- The single installer (all real writes): [`scripts/install.py`](../../scripts/install.py)
|
|
31
|
+
- Tests: [`tests/server/`](../../tests/server/) + [`tests/e2e/`](../../tests/e2e/)
|
|
25
32
|
|
|
26
33
|
## Local-only invariant
|
|
27
34
|
|
|
@@ -34,106 +41,118 @@ no cross-origin asset, no remote endpoint — CSP
|
|
|
34
41
|
## Boot sequence
|
|
35
42
|
|
|
36
43
|
```
|
|
37
|
-
|
|
44
|
+
agent-config install (or `setup`, or `init` when the GUI is usable)
|
|
38
45
|
│
|
|
39
|
-
├─►
|
|
40
|
-
├─►
|
|
41
|
-
├─►
|
|
42
|
-
├─►
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
├─► pick a free loopback port; mint a per-server bearer/CSRF token
|
|
47
|
+
├─► Fastify listen({ host: '127.0.0.1', port })
|
|
48
|
+
├─► print `WIZARD_READY <url>` on stdout (url carries `?token=…` + `#/…`)
|
|
49
|
+
├─► open the OS browser at <url> (skipped with --no-open / headless)
|
|
50
|
+
└─► serve until the user finishes (Finish → install) or Ctrl-C
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
`init` is the consumer entry point and the install **front-end**: the TS CLI
|
|
54
|
+
(`src/cli/initRouting.ts → shouldInitLaunchGui`) opens the browser wizard
|
|
55
|
+
directly (via `runUiServe`, install mode) whenever it can actually be used —
|
|
56
|
+
interactive TTY, a display, and no CLI-mode flag. There is no CLI tool-picker
|
|
57
|
+
in that path; the wizard collects the tool/pack/settings selection and its
|
|
58
|
+
Finish drives the **whole** install through `POST /api/v1/wizard/apply` →
|
|
59
|
+
`scripts/install.py --apply-payload` (one installer).
|
|
60
|
+
|
|
61
|
+
`init` falls back to the non-interactive bash CLI install (`scripts/install` →
|
|
62
|
+
`install.py`) — and never boots the GUI — when any of these hold: `CI` set,
|
|
63
|
+
`AGENT_CONFIG_NO_UI` set, stdin/stdout not a TTY, a headless host (SSH / Linux
|
|
64
|
+
without `DISPLAY`), or a CLI-mode flag (`--no-ui` / `--tools` / `--ai` /
|
|
65
|
+
`--yes` / `--quiet` / `--dry-run` / `--minimal` / `--settings-only` /
|
|
66
|
+
`--list-tools`). `install.py`'s own tail-launch (`_wizard_spawn`, matching the
|
|
67
|
+
`WIZARD_READY <url>` handshake) remains for direct `python3 install.py` runs.
|
|
68
|
+
|
|
69
|
+
### `WIZARD_READY` stdout contract
|
|
70
|
+
|
|
71
|
+
The server emits exactly one line on stdout when it has bound:
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
WIZARD_READY http://127.0.0.1:<port>/?token=<token>#/<route>
|
|
46
75
|
```
|
|
47
76
|
|
|
48
|
-
|
|
49
|
-
the
|
|
77
|
+
The supervisor matches `^WIZARD_READY (http://(127.0.0.1|localhost):\d+/\S*)$`
|
|
78
|
+
(no `url=` prefix; the query/hash are part of the captured URL). The line is
|
|
79
|
+
unconditional so headless CI can detect "Fastify bound" without polling the
|
|
80
|
+
port.
|
|
50
81
|
|
|
51
82
|
## Endpoints
|
|
52
83
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
|
56
|
-
|
|
57
|
-
| GET |
|
|
58
|
-
| GET | `/api/
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
| POST | `/api/
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
- `
|
|
84
|
-
-
|
|
85
|
-
- `
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
84
|
+
Versioned under `/api/v1/`. Selected routes:
|
|
85
|
+
|
|
86
|
+
| Method | Path | Purpose |
|
|
87
|
+
|--------|-------------------------------|-------------------------------------------------------------------------|
|
|
88
|
+
| GET | `/` | SPA shell (token passed via the `?token=` query) |
|
|
89
|
+
| GET | `/api/v1/wizard/state` | Resumable partial wizard state |
|
|
90
|
+
| POST | `/api/v1/wizard/state` | Persist state between steps |
|
|
91
|
+
| GET | `/api/v1/wizard/manifest` | Locked discovery-manifest (extended mode) |
|
|
92
|
+
| GET | `/api/v1/wizard/auto-detect` | Project-signal evidence for the `ai-tools` step (extended mode) |
|
|
93
|
+
| POST | `/api/v1/wizard/finish` | 2PC commit of settings + user-identity |
|
|
94
|
+
| POST | `/api/v1/wizard/apply` | **Single real-apply route.** `dry_run:true` → buffered plan preview; otherwise SSE-streams `scripts/install.py --apply-payload` |
|
|
95
|
+
| GET | `/api/v1/install/detect` | Scope + project shape + tool presence |
|
|
96
|
+
| POST | `/api/v1/install/plan` | Plan preview (per-tool file counts + conflicts) for the Review step |
|
|
97
|
+
| GET | `/api/v1/install/recovery` | Interrupted-run recovery state |
|
|
98
|
+
| GET | `/api/v1/install/legacy-v3` | v3-install detection (backup screen) |
|
|
99
|
+
|
|
100
|
+
The TypeScript apply engine and its `POST /api/v1/install/apply` SSE route
|
|
101
|
+
were removed (road-to-single-install-source-of-truth § Phase 3). All real
|
|
102
|
+
writes now flow through `POST /api/v1/wizard/apply` → `scripts/install.py`.
|
|
103
|
+
|
|
104
|
+
Every request passes three `onRequest` hooks in
|
|
105
|
+
[`src/server/app.ts`](../../src/server/app.ts): a `Host`-header allow-list,
|
|
106
|
+
an `Origin` allow-list (browser-issued requests), and a per-server bearer
|
|
107
|
+
token (`Authorization: Bearer <token>`, minted at boot, surfaced in the
|
|
108
|
+
`?token=` URL). A bad token / Host / Origin returns `403`.
|
|
109
|
+
|
|
110
|
+
## Real apply — single source of truth
|
|
111
|
+
|
|
112
|
+
`POST /api/v1/wizard/apply` is the only write path:
|
|
113
|
+
|
|
114
|
+
- `dry_run: true` → spawns `install.py --apply-payload <tmp> --dry-run` and
|
|
115
|
+
returns the buffered plan-summary text (used by the Review preview).
|
|
116
|
+
- otherwise → spawns `install.py --apply-payload <tmp>` (real apply) and
|
|
117
|
+
**streams** the installer's NDJSON stdout
|
|
118
|
+
(`{type:"file",…}` / `{type:"done"|"error"}`) mapped to the SSE frames the
|
|
119
|
+
SPA consumes. The child is killed if the client disconnects
|
|
120
|
+
(abort-on-disconnect, Finding #24). The installer owns its own
|
|
121
|
+
transactional state (the user-scope lockfile + project manifest), so the
|
|
122
|
+
GUI does not maintain a parallel transaction log.
|
|
91
123
|
|
|
92
124
|
## SSE event framing
|
|
93
125
|
|
|
94
|
-
|
|
95
|
-
is one of:
|
|
126
|
+
Each real-apply event is `data: <json>\n\n`. Frames:
|
|
96
127
|
|
|
97
128
|
```jsonc
|
|
98
|
-
{ "type": "
|
|
99
|
-
{ "type": "
|
|
129
|
+
{ "type": "progress", "file": "<tool>", "status": "deployed", "written": 1, "total": 3 }
|
|
130
|
+
{ "type": "done", "summary": { "written": 3, "total": 3 } }
|
|
131
|
+
{ "type": "error", "code": "<code>", "message": "<reason>", "recoverable": false }
|
|
100
132
|
```
|
|
101
133
|
|
|
102
|
-
The browser
|
|
103
|
-
transaction log and unblocks the idle timer.
|
|
104
|
-
|
|
105
|
-
## Tarball budget
|
|
106
|
-
|
|
107
|
-
GUI assets under `packages/core/installer/src/gui/` (inlined HTML +
|
|
108
|
-
CSS + JS in `static-assets.ts`) must stay **≤ 200 KB compiled**. The
|
|
109
|
-
constraint is enforced by reviewer judgment for now; a CI check is
|
|
110
|
-
tracked under the Phase 6 follow-ups.
|
|
134
|
+
The browser stops reading on `done` / `error`; the server ends the stream.
|
|
111
135
|
|
|
112
136
|
## Security failure modes covered
|
|
113
137
|
|
|
114
|
-
- **Remote exploitation** — loopback bind, Host
|
|
115
|
-
|
|
116
|
-
- **DNS rebinding** — Host header check covers POSTs that omit
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
boot; live PIDs block boot with a helpful message.
|
|
121
|
-
- **Mid-install crash** — transaction log + boot-time rollback prompt.
|
|
122
|
-
- **Hidden state** — closing the tab triggers idle timeout; no
|
|
123
|
-
cross-tab session.
|
|
138
|
+
- **Remote exploitation** — loopback bind, Host allow-list, Origin
|
|
139
|
+
allow-list, per-server bearer token.
|
|
140
|
+
- **DNS rebinding** — Host header check covers POSTs that omit `Origin`.
|
|
141
|
+
- **Mid-install crash** — `scripts/install.py` owns the user-scope
|
|
142
|
+
lockfile + project manifest; the recovery routes
|
|
143
|
+
(`/api/v1/install/recovery`) surface an interrupted run on next boot.
|
|
124
144
|
|
|
125
145
|
## Non-goals (documented contract)
|
|
126
146
|
|
|
127
|
-
- Not a hosted SaaS — no auth
|
|
128
|
-
- Not a
|
|
129
|
-
|
|
130
|
-
- Not a CI surface —
|
|
131
|
-
|
|
132
|
-
CI path is the flag-driven non-interactive CLI.
|
|
147
|
+
- Not a hosted SaaS — no auth account model, no telemetry.
|
|
148
|
+
- Not a parallel installer — the GUI is a selection front-end; every
|
|
149
|
+
real write goes through `scripts/install.py --apply-payload`.
|
|
150
|
+
- Not a CI surface — `--no-open` headless boots are supported for smoke
|
|
151
|
+
tests, but the canonical CI path is the flag-driven non-interactive CLI.
|
|
133
152
|
|
|
134
153
|
## Apply payload — versioning handshake (road-to-global-only-install Phase 0.4 · D12)
|
|
135
154
|
|
|
136
|
-
|
|
155
|
+
`POST /api/v1/wizard/apply` accepts a discriminated-union body keyed on
|
|
137
156
|
`schema_version`. The full JSON Schema lives at
|
|
138
157
|
[`internal/schemas/wizard-apply-payload.schema.json`](../../internal/schemas/wizard-apply-payload.schema.json).
|
|
139
158
|
|
|
@@ -142,18 +161,19 @@ tracked under the Phase 6 follow-ups.
|
|
|
142
161
|
| `"installer-v1"` | `InstallerPayloadV1` | `{ ai_tools[], configs{}, dry_run? }` — legacy Installer-GUI, AI tools only. |
|
|
143
162
|
| `"wizard-v2"` | `WizardPayloadV2` | `{ tools[], packs[], settings{}, scope_to_project_only?, dry_run? }` — unified 9-step wizard. |
|
|
144
163
|
|
|
145
|
-
**D12 (locked).** Single
|
|
164
|
+
**D12 (locked).** Single apply endpoint with a `schema_version`
|
|
146
165
|
discriminator — **not** two endpoints with a shared Python backend.
|
|
147
|
-
Reasoning: one bind, one
|
|
166
|
+
Reasoning: one bind, one token, one installer; the
|
|
148
167
|
Python `scripts/install.py` payload-router branches on
|
|
149
168
|
`schema_version` before any disk write. The dual-endpoint variant was
|
|
150
|
-
considered and rejected for doubling the
|
|
151
|
-
with no observability gain.
|
|
169
|
+
considered and rejected for doubling the surface with no gain.
|
|
152
170
|
|
|
153
171
|
`schema_version` is **required**. Servers MUST reject any body that
|
|
154
|
-
lacks it (HTTP
|
|
155
|
-
|
|
156
|
-
|
|
172
|
+
lacks it (HTTP 4xx, single-line error pointing at the schema). The
|
|
173
|
+
real-apply path is now wired end-to-end
|
|
174
|
+
(road-to-single-install-source-of-truth § Phases 1–2): `install.py`
|
|
175
|
+
translates the payload into the canonical install and streams NDJSON
|
|
176
|
+
progress back to the GUI.
|
|
157
177
|
|
|
158
178
|
## Unified 9-step flow (road-to-global-only-install § Phase 1.6)
|
|
159
179
|
|
|
@@ -25,7 +25,7 @@ Companion artefacts:
|
|
|
25
25
|
- Roadmap: [`agents/roadmaps/road-to-internal-ai-os-deployment.md`](../../agents/roadmaps/road-to-internal-ai-os-deployment.md)
|
|
26
26
|
- Artefacts: [`packages/core/deploy/`](../../packages/core/deploy/)
|
|
27
27
|
- Env contract: [`docs/deploy/env-vars.md`](../deploy/env-vars.md)
|
|
28
|
-
- Council question (drafted, not invoked — no keys): [`agents/tmp/council-question-deployment-shape.md`](../../agents/tmp/council-question-deployment-shape.md)
|
|
28
|
+
- Council question (drafted, not invoked — no keys): [`agents/tmp/council-question-deployment-shape.md`](../../agents/tmp/old/council-question-deployment-shape.md)
|
|
29
29
|
- Predecessor ADR: [`ADR-016`](ADR-016-installer-architecture.md) — installer architecture (agent-mode protocol the GUI server wraps).
|
|
30
30
|
|
|
31
31
|
## Context
|
|
@@ -141,7 +141,7 @@ orchestrator-agnostic.
|
|
|
141
141
|
## Open questions (council-deferred)
|
|
142
142
|
|
|
143
143
|
The accompanying council question file
|
|
144
|
-
[`agents/tmp/council-question-deployment-shape.md`](../../agents/tmp/council-question-deployment-shape.md)
|
|
144
|
+
[`agents/tmp/council-question-deployment-shape.md`](../../agents/tmp/old/council-question-deployment-shape.md)
|
|
145
145
|
has not yet been run (no provider keys configured). A maintainer with
|
|
146
146
|
keys should run it and either ratify or supersede this ADR.
|
|
147
147
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
> and Phase 3 (central policy) shipping first.
|
|
7
7
|
>
|
|
8
8
|
> Open design questions live in
|
|
9
|
-
> [`agents/tmp/council-question-connector-scope.md`](../../agents/tmp/council-question-connector-scope.md).
|
|
9
|
+
> [`agents/tmp/council-question-connector-scope.md`](../../agents/tmp/old/council-question-connector-scope.md).
|
|
10
10
|
|
|
11
11
|
## Audience
|
|
12
12
|
|
|
@@ -124,6 +124,6 @@ All of the above land in Phase 5, contingent on Phases 2 + 3.
|
|
|
124
124
|
## Cross-references
|
|
125
125
|
|
|
126
126
|
- 🚧 Reserved ADR slot: `docs/decisions/ADR-025-connector-scope.md`.
|
|
127
|
-
- Council question: [`agents/tmp/council-question-connector-scope.md`](../../agents/tmp/council-question-connector-scope.md).
|
|
127
|
+
- Council question: [`agents/tmp/council-question-connector-scope.md`](../../agents/tmp/old/council-question-connector-scope.md).
|
|
128
128
|
- Quickstart: [`quickstart.md`](quickstart.md).
|
|
129
129
|
- Policy cookbook: [`policy-cookbook.md`](policy-cookbook.md).
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
> before code lands. Every section below is normative-once-shipped.
|
|
8
8
|
>
|
|
9
9
|
> Open design questions live in
|
|
10
|
-
> [`agents/tmp/council-question-central-policy.md`](../../agents/tmp/council-question-central-policy.md).
|
|
10
|
+
> [`agents/tmp/council-question-central-policy.md`](../../agents/tmp/old/council-question-central-policy.md).
|
|
11
11
|
|
|
12
12
|
## Audience
|
|
13
13
|
|
|
@@ -125,6 +125,6 @@ All of the above land in Phase 3. Until then, per-user
|
|
|
125
125
|
## Cross-references
|
|
126
126
|
|
|
127
127
|
- 🚧 Reserved ADR slot: `docs/decisions/ADR-023-central-policy.md`.
|
|
128
|
-
- Council question: [`agents/tmp/council-question-central-policy.md`](../../agents/tmp/council-question-central-policy.md).
|
|
128
|
+
- Council question: [`agents/tmp/council-question-central-policy.md`](../../agents/tmp/old/council-question-central-policy.md).
|
|
129
129
|
- Env contract: [`env-vars.md`](env-vars.md) (`POLICY_PATH`).
|
|
130
130
|
- Quickstart: [`quickstart.md`](quickstart.md).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@event4u/agent-config",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.0",
|
|
4
4
|
"description": "Universal AI Agent OS \u2014 audited skills, governance rules, commands, and templates for AI coding tools (Claude Code, Cursor, Windsurf, Copilot).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
Binary file
|
|
Binary file
|
|
Binary file
|