@event4u/agent-config 3.1.1 → 3.2.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/commands/analytics/prune.md +78 -0
- package/.agent-src/commands/analytics/show.md +107 -0
- package/.agent-src/commands/analytics.md +64 -0
- package/.agent-src/commands/knowledge/forget.md +104 -0
- package/.agent-src/commands/knowledge/ingest.md +122 -0
- package/.agent-src/commands/knowledge/list.md +102 -0
- package/.agent-src/commands/knowledge.md +75 -0
- package/.agent-src/scripts/update_roadmap_progress.py +1 -1
- package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/.claude-plugin/marketplace.json +8 -1
- package/CHANGELOG.md +38 -230
- package/README.md +12 -2
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +162 -8
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +12 -5
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +11 -4
- package/dist/mcp/mcp-cloudflare-catalogue.json +2 -0
- package/dist/mcp/registry-manifest.json +5 -3
- package/docs/architecture.md +1 -1
- package/docs/archive/CHANGELOG-pre-3.2.0.md +268 -0
- package/docs/catalog.md +9 -2
- package/docs/contracts/CHANGELOG-conventions.md +19 -0
- package/docs/contracts/at-rest-encryption.md +146 -0
- package/docs/contracts/daily-workspace.md +137 -0
- package/docs/contracts/explain-modes.md +146 -0
- package/docs/contracts/host-agent-protocol.md +88 -0
- package/docs/contracts/local-analytics.md +148 -0
- package/docs/contracts/local-knowledge-ingestion.md +96 -0
- package/docs/contracts/role-experience.md +121 -0
- package/docs/contracts/workspace-documents.md +140 -0
- package/docs/decisions/ADR-022-daily-workspace-decomposition.md +140 -0
- package/docs/decisions/ADR-023-host-agent-protocol.md +129 -0
- package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +126 -0
- package/docs/decisions/ADR-025-workspace-chrome.md +119 -0
- package/docs/decisions/ADR-026-explain-mode-translation.md +117 -0
- package/docs/deploy/small-team-recipe.md +148 -0
- package/docs/deploy/team-deployment-posture.md +91 -0
- package/docs/getting-started-by-role.md +27 -0
- package/docs/getting-started.md +1 -1
- package/docs/guides/local-analytics.md +125 -0
- package/docs/guides/local-knowledge.md +127 -0
- package/package.json +4 -2
- 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/_lib/changelog_eras.py +330 -0
- package/scripts/memory_lookup.py +78 -1
- package/scripts/release.py +93 -3
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
adr: 025
|
|
3
|
+
status: accepted
|
|
4
|
+
date: 2026-05-24
|
|
5
|
+
decision: workspace-chrome
|
|
6
|
+
supersedes: —
|
|
7
|
+
superseded_by: —
|
|
8
|
+
phase: v3.x · employee-product-and-external-proof Phase 4
|
|
9
|
+
type: forward-looking
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ADR-025 — Workspace chrome — browser tab against the installer GUI
|
|
13
|
+
|
|
14
|
+
## Status
|
|
15
|
+
|
|
16
|
+
**Accepted** · 2026-05-24. Third of three sub-ADRs created by
|
|
17
|
+
[`ADR-022`](ADR-022-daily-workspace-decomposition.md), depends on
|
|
18
|
+
[`ADR-023`](ADR-023-host-agent-protocol.md) (protocol) and
|
|
19
|
+
[`ADR-024`](ADR-024-workspace-v0-feature-floor.md) (feature floor).
|
|
20
|
+
Picks the UI shape that wraps the v0 feature floor.
|
|
21
|
+
|
|
22
|
+
## Context
|
|
23
|
+
|
|
24
|
+
The original Phase 4 question framed chrome as a four-way pick:
|
|
25
|
+
|
|
26
|
+
| Option | Pitch |
|
|
27
|
+
|---|---|
|
|
28
|
+
| **(a) Extend installer GUI** | Reuse `packages/core/installer/src/gui/`, add workspace routes. Same loopback server, same CSRF gate, same browser. |
|
|
29
|
+
| **(b) Electron / Tauri desktop app** | Native shell, OS integration (tray icon, hotkeys, autostart). |
|
|
30
|
+
| **(c) Browser tab against the installer GUI** | Same as (a) on the runtime side, but framed as a standalone surface (`/workspace`) the user bookmarks. |
|
|
31
|
+
| **(d) TUI-first** | Terminal UI, optional browser companion. Lowest install footprint. |
|
|
32
|
+
|
|
33
|
+
The council demanded ADRs 023 and 024 land first. With those in
|
|
34
|
+
place: the v0 surface is three small features (launcher, JSONL log,
|
|
35
|
+
knowledge stub) talking to a CLI subprocess. There is no need for
|
|
36
|
+
OS-level integration, no native APIs to call, no real-time low-latency
|
|
37
|
+
rendering. The installer already ships a loopback HTTP + CSRF +
|
|
38
|
+
browser-launch path ([`docs/contracts/gui-wizard.md`](../contracts/gui-wizard.md)).
|
|
39
|
+
|
|
40
|
+
## Decision
|
|
41
|
+
|
|
42
|
+
Ship workspace v0 as **(c) — a browser tab against the installer
|
|
43
|
+
GUI**.
|
|
44
|
+
|
|
45
|
+
Concretely:
|
|
46
|
+
|
|
47
|
+
- New route group `/workspace` inside the existing
|
|
48
|
+
`packages/core/installer/src/gui/server.ts` Node server (single
|
|
49
|
+
process, single CSRF token, same loopback bind).
|
|
50
|
+
- `npx @event4u/agent-config workspace` opens the browser at the
|
|
51
|
+
`/workspace` route — same launch UX as `init --gui`, different
|
|
52
|
+
default landing page.
|
|
53
|
+
- Per-user state lives under `~/.event4u/agent-config/workspace/`
|
|
54
|
+
(sessions JSONL + inbox files per ADR-024).
|
|
55
|
+
- The installer GUI and the workspace UI **share the same shell**
|
|
56
|
+
(header, identity strip, theme) so a user installing for the
|
|
57
|
+
first time sees the workspace as the natural next surface.
|
|
58
|
+
|
|
59
|
+
### Why this option
|
|
60
|
+
|
|
61
|
+
- **(c)** is the only option that reuses the proven loopback +
|
|
62
|
+
CSRF + browser-launch path. Zero new infrastructure surface.
|
|
63
|
+
- **(a)** is functionally identical at runtime — the only delta is
|
|
64
|
+
framing. The framing matters: a user-facing "workspace" needs its
|
|
65
|
+
own URL and bookmark story. (c) gets that for free.
|
|
66
|
+
- **(b)** Electron / Tauri adds a ~150 MB install, a code-signing
|
|
67
|
+
story, an autoupdate channel, and a native event loop. None of
|
|
68
|
+
that is needed for the v0 floor; deferred to v1 if recruit
|
|
69
|
+
sessions surface OS-integration demand.
|
|
70
|
+
- **(d)** TUI-first is intriguing for the developer audience but
|
|
71
|
+
excludes the non-developer roles (galabau owner, content creator,
|
|
72
|
+
consultant) named in Phase 1 — the audience this roadmap is for.
|
|
73
|
+
|
|
74
|
+
### Hard rule: no chrome rewrite without recruit-session signal
|
|
75
|
+
|
|
76
|
+
The chrome choice does **not** survive the recruit sessions
|
|
77
|
+
silently. If Phase 1 (recruit sessions) surfaces a hard "browser
|
|
78
|
+
tabs are wrong" signal from ≥ 2 of the 3 cohorts, this ADR is
|
|
79
|
+
superseded by a new ADR-027 before any further work on the chrome.
|
|
80
|
+
A maintainer note (not a vendor lock-in) ensures the rewrite can
|
|
81
|
+
happen at v0.5, not v2.
|
|
82
|
+
|
|
83
|
+
## Consequences
|
|
84
|
+
|
|
85
|
+
**Positive**
|
|
86
|
+
|
|
87
|
+
- Zero new infrastructure. Installer GUI is the substrate.
|
|
88
|
+
- Cross-platform for free (browser).
|
|
89
|
+
- One CSRF / port / bind story across installer + workspace —
|
|
90
|
+
one audit surface, one threat model.
|
|
91
|
+
|
|
92
|
+
**Negative**
|
|
93
|
+
|
|
94
|
+
- No native OS hooks (tray icon, global hotkey, autostart). Users
|
|
95
|
+
must manually run `npx ... workspace` to open the tab.
|
|
96
|
+
- Browser-tab UX has a "where did my workspace go?" failure mode
|
|
97
|
+
when the tab is closed. Mitigated by a persistent bookmark and a
|
|
98
|
+
reopen-on-launch flag in `.agent-settings.yml`.
|
|
99
|
+
- Electron / Tauri loyalists will read this as conservative; the
|
|
100
|
+
v1 ADR can reopen if signal supports it.
|
|
101
|
+
|
|
102
|
+
**Reversal cost** — medium. Migrating from browser-tab to native
|
|
103
|
+
requires re-implementing the shell and the asset bundling pipeline,
|
|
104
|
+
but the underlying state model (filesystem JSONL + inbox) is shell-
|
|
105
|
+
agnostic.
|
|
106
|
+
|
|
107
|
+
## Open questions (post-recruit-session)
|
|
108
|
+
|
|
109
|
+
- Tray-icon / autostart story (Phase 1 + Phase 4 v0.5 — defer).
|
|
110
|
+
- Multi-tenant browser surface for the deployed `agent-config`
|
|
111
|
+
topology (covered by [`ADR-021`](ADR-021-deployment-shape.md);
|
|
112
|
+
v0 is single-user local only).
|
|
113
|
+
|
|
114
|
+
## Cross-references
|
|
115
|
+
|
|
116
|
+
- Predecessor ADRs: [`ADR-022`](ADR-022-daily-workspace-decomposition.md), [`ADR-023`](ADR-023-host-agent-protocol.md), [`ADR-024`](ADR-024-workspace-v0-feature-floor.md).
|
|
117
|
+
- GUI wizard substrate: [`docs/contracts/gui-wizard.md`](../contracts/gui-wizard.md).
|
|
118
|
+
- Installer architecture: [`ADR-016`](ADR-016-installer-architecture.md).
|
|
119
|
+
- Deployment shape: [`ADR-021`](ADR-021-deployment-shape.md).
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
adr: 026
|
|
3
|
+
status: accepted
|
|
4
|
+
date: 2026-05-24
|
|
5
|
+
decision: explain-mode-translation
|
|
6
|
+
supersedes: —
|
|
7
|
+
superseded_by: —
|
|
8
|
+
phase: v3.x · employee-product-and-external-proof Phase 6
|
|
9
|
+
type: forward-looking
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ADR-026 — Explain-mode translation — plain as a renderer, not a new pipeline
|
|
13
|
+
|
|
14
|
+
## Status
|
|
15
|
+
|
|
16
|
+
**Accepted** · 2026-05-24. Phase 6 design. Depends on the existing
|
|
17
|
+
`explain-v1` envelope shape stabilized in `agent-memory` 3.0 and the
|
|
18
|
+
workspace surface from [`ADR-025`](ADR-025-workspace-chrome.md).
|
|
19
|
+
|
|
20
|
+
## Context
|
|
21
|
+
|
|
22
|
+
Feedback A names the technical explain-trace as a non-technical-employee
|
|
23
|
+
barrier. Today the right rail shows `trust_score: 0.74`,
|
|
24
|
+
`promotion_history: [...]`, `contradictions: 0` — vocabulary that
|
|
25
|
+
assumes the reader knows the memory model. For galabau, content-creator,
|
|
26
|
+
and consultant roles, this is opaque.
|
|
27
|
+
|
|
28
|
+
Two options surveyed:
|
|
29
|
+
|
|
30
|
+
| Option | Pitch | Cost |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| **(a) Second MCP surface** | Add `memory_explain_plain` returning a pre-translated envelope. | New endpoint, new schema, drift risk between two surfaces, requires MCP version bump. |
|
|
33
|
+
| **(b) Renderer over existing envelope** | Treat plain mode as a pure rendering function over the existing `explain-v1` envelope. Per-role glossary overrides labels. | Zero MCP change, zero data drift, zero schema bump. Renderer testable with fixtures. |
|
|
34
|
+
|
|
35
|
+
## Decision
|
|
36
|
+
|
|
37
|
+
Ship Phase 6 plain mode as **(b) — a pure renderer over the existing
|
|
38
|
+
`explain-v1` envelope**.
|
|
39
|
+
|
|
40
|
+
Concretely:
|
|
41
|
+
|
|
42
|
+
- `renderExplain(envelope, { mode, glossary?, locale? })` is a pure
|
|
43
|
+
function in `packages/core/src/workspace/explain/`.
|
|
44
|
+
- Two modes: `technical` (current surface, verbatim) and `plain`
|
|
45
|
+
(4 labelled paragraphs: where from, how confident, when reviewed,
|
|
46
|
+
what's contested).
|
|
47
|
+
- 4-band confidence label (Very High / High / Medium / Low) with
|
|
48
|
+
default thresholds per [`docs/contracts/explain-modes.md`](../contracts/explain-modes.md);
|
|
49
|
+
thresholds overridable per role.
|
|
50
|
+
- 3-band freshness label (Fresh / Aging / Stale) from `decay.applied_factor`.
|
|
51
|
+
- Per-role `agents/roles/<role>/explain-glossary.yml` overrides
|
|
52
|
+
default labels and band thresholds. Glossary YAMLs are the
|
|
53
|
+
one carve-out from the `.md`-must-be-English rule for role-native
|
|
54
|
+
rendered strings.
|
|
55
|
+
- `/why` quick command available to every role; resolves `mem://<id>`
|
|
56
|
+
markers in the last reply and calls `memory_explain` per id, then
|
|
57
|
+
renders in the active mode.
|
|
58
|
+
|
|
59
|
+
## Why (b)
|
|
60
|
+
|
|
61
|
+
- **Zero MCP drift.** One envelope, two views. No risk of plain
|
|
62
|
+
text saying something the engineer view contradicts.
|
|
63
|
+
- **Testable.** Pure function over fixtures. Golden tests cover
|
|
64
|
+
high-trust, low-trust, contradicted, recently-promoted, deprecated.
|
|
65
|
+
- **No version bump.** `agent-memory` MCP surface stays at the
|
|
66
|
+
current contract; consumers running older clients still see the
|
|
67
|
+
technical envelope unchanged.
|
|
68
|
+
- **Glossary carve-out is bounded.** Only the `explain-glossary.yml`
|
|
69
|
+
per role holds runtime strings in role-native language; the
|
|
70
|
+
contract `.md`, the ADR, the renderer code stay English.
|
|
71
|
+
|
|
72
|
+
## Why not (a)
|
|
73
|
+
|
|
74
|
+
- A second MCP endpoint duplicates the envelope shape and creates
|
|
75
|
+
two surfaces that must stay in sync. Drift will land within one
|
|
76
|
+
release.
|
|
77
|
+
- Schema bump on `agent-memory` cascades to every downstream package
|
|
78
|
+
consuming the MCP; Phase 6 is not the right time to force that.
|
|
79
|
+
|
|
80
|
+
## Consequences
|
|
81
|
+
|
|
82
|
+
**Positive**
|
|
83
|
+
|
|
84
|
+
- Plain mode lands as a renderer change, no MCP version bump.
|
|
85
|
+
- Per-role glossary opens the door for the recruit-session
|
|
86
|
+
participants (Phase 1) to localize the plain surface without a
|
|
87
|
+
code change.
|
|
88
|
+
- Technical mode survives unchanged for engineering-lead role.
|
|
89
|
+
|
|
90
|
+
**Negative**
|
|
91
|
+
|
|
92
|
+
- Plain mode is downstream of envelope shape; an `explain-v2`
|
|
93
|
+
envelope (next major) requires updating the renderer too. Cost
|
|
94
|
+
is bounded — the renderer is one file.
|
|
95
|
+
- Glossary localization can drift from English defaults if a role
|
|
96
|
+
ships a partial override. Mitigated by the renderer falling back
|
|
97
|
+
to defaults for missing keys.
|
|
98
|
+
|
|
99
|
+
**Reversal cost** — low. Replacing (b) with (a) later if the
|
|
100
|
+
renderer surface grows beyond pure rendering (e.g. needs a different
|
|
101
|
+
data fetch) requires only adding the second MCP endpoint; existing
|
|
102
|
+
glossary YAMLs translate forward.
|
|
103
|
+
|
|
104
|
+
## Open questions (deferred)
|
|
105
|
+
|
|
106
|
+
- Localization of the technical view (today: English only). Out of
|
|
107
|
+
scope for v0; deferred until ≥ 1 recruit-session participant
|
|
108
|
+
asks for it.
|
|
109
|
+
- Audio / spoken-mode rendering of the plain envelope for the
|
|
110
|
+
consultant-on-the-road role. Defer to a future ADR.
|
|
111
|
+
|
|
112
|
+
## Cross-references
|
|
113
|
+
|
|
114
|
+
- Contract: [`docs/contracts/explain-modes.md`](../contracts/explain-modes.md).
|
|
115
|
+
- Envelope: [`docs/contracts/agent-memory-contract.md`](../contracts/agent-memory-contract.md).
|
|
116
|
+
- Workspace: [`ADR-025`](ADR-025-workspace-chrome.md), [`docs/contracts/daily-workspace.md`](../contracts/daily-workspace.md).
|
|
117
|
+
- Roles: [`docs/contracts/role-experience.md`](../contracts/role-experience.md).
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Small-Team Recipe — 3–10 people, no code change
|
|
2
|
+
|
|
3
|
+
> **Status** · v0 · 2026-05-24. Phase 9 of
|
|
4
|
+
> [`road-to-employee-product-and-external-proof.md`](../../agents/roadmaps/road-to-employee-product-and-external-proof.md).
|
|
5
|
+
> The recipe relies entirely on **existing primitives**. No new
|
|
6
|
+
> code, no new server, no shared backend. Each user runs the
|
|
7
|
+
> workspace locally; the team shares the inputs.
|
|
8
|
+
|
|
9
|
+
## Audience
|
|
10
|
+
|
|
11
|
+
A team of 3–10 people in one organisation that wants every member
|
|
12
|
+
to use agent-config as their daily AI tool, with **shared prompts**,
|
|
13
|
+
**shared role experiences**, and **shared knowledge sources** —
|
|
14
|
+
but where buying / running a central server is not justified.
|
|
15
|
+
|
|
16
|
+
Examples this recipe is sized for:
|
|
17
|
+
|
|
18
|
+
- A 4-person landscape-gardening business (one owner, three foremen).
|
|
19
|
+
- A 6-person content team at a small agency.
|
|
20
|
+
- A 5-person consulting partnership.
|
|
21
|
+
|
|
22
|
+
## Architecture in one picture
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
┌─ shared NAS / SharePoint / Dropbox ──────────────────────────┐
|
|
26
|
+
│ knowledge/ │
|
|
27
|
+
│ ├── handbuch.pdf │
|
|
28
|
+
│ ├── offer-templates/ │
|
|
29
|
+
│ └── customer-history/ │
|
|
30
|
+
└───────────────────────────────────────────────────────────────┘
|
|
31
|
+
▲ ▲
|
|
32
|
+
│ each user mounts │
|
|
33
|
+
│ │
|
|
34
|
+
┌──────────────────────┴──┐ ┌─────────────────┴─────────┐
|
|
35
|
+
│ Person A laptop │ │ Person B laptop │
|
|
36
|
+
│ workspace + local │ │ workspace + local │
|
|
37
|
+
│ knowledge index (per- │ │ knowledge index (per- │
|
|
38
|
+
│ user, ingested from NAS) │ │ user, ingested from NAS) │
|
|
39
|
+
└─────────────┬─────────────┘ └────────────┬──────────────┘
|
|
40
|
+
│ │
|
|
41
|
+
└──────── git pull / push ─────┘
|
|
42
|
+
▲
|
|
43
|
+
│
|
|
44
|
+
┌───────────┴────────────────┐
|
|
45
|
+
│ Shared `agents/overrides/`│
|
|
46
|
+
│ git repo (private) │
|
|
47
|
+
│ ├── prompts/ │
|
|
48
|
+
│ ├── roles/ │
|
|
49
|
+
│ └── glossaries/ │
|
|
50
|
+
└─────────────────────────────┘
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Set up the shared overrides repo
|
|
54
|
+
|
|
55
|
+
One person does this once:
|
|
56
|
+
|
|
57
|
+
1. Create a **private** git repo, e.g. `internal-agent-pack`.
|
|
58
|
+
2. Inside, mirror the structure of the package's `agents/overrides/`:
|
|
59
|
+
`prompts/`, `roles/`, `glossaries/`.
|
|
60
|
+
3. Add the team's role experiences (Phase 3 of the roadmap):
|
|
61
|
+
one folder per role under `roles/<role>/` with `index.md`,
|
|
62
|
+
`skills.yml`, `prompts/`, and (Phase 6) `explain-glossary.yml`.
|
|
63
|
+
4. Push to the team's git host. Grant read access to every team
|
|
64
|
+
member, write access to the maintainers.
|
|
65
|
+
|
|
66
|
+
Each team member then:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
git clone <repo> ~/internal-agent-pack
|
|
70
|
+
ln -s ~/internal-agent-pack/prompts ~/.event4u/agent-config/overrides/prompts
|
|
71
|
+
ln -s ~/internal-agent-pack/roles ~/.event4u/agent-config/overrides/roles
|
|
72
|
+
ln -s ~/internal-agent-pack/glossaries ~/.event4u/agent-config/overrides/glossaries
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
`git pull` from anywhere on the team rolls out new prompts /
|
|
76
|
+
glossaries to every laptop without any code change.
|
|
77
|
+
|
|
78
|
+
## Set up shared knowledge
|
|
79
|
+
|
|
80
|
+
Pick one shared mount the whole team has read access to: NAS,
|
|
81
|
+
SharePoint mounted via DAV, Dropbox, Google Drive desktop sync.
|
|
82
|
+
Anything that surfaces as a file path.
|
|
83
|
+
|
|
84
|
+
Each team member runs once:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npx @event4u/agent-config knowledge:ingest /Volumes/team-share/knowledge
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Per-user index. Same content. When new files land on the share,
|
|
91
|
+
each user re-runs the ingest (Phase 2 will add a watcher later).
|
|
92
|
+
|
|
93
|
+
## Daily flow per team member
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npx @event4u/agent-config workspace
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Opens the browser tab. Launcher shows the team's role experiences
|
|
100
|
+
(from the shared overrides). Click a task → workspace shells out
|
|
101
|
+
to the user's Tier-1 host (Claude Code / Codex / Gemini) or writes
|
|
102
|
+
to the inbox for Tier-3 hosts. Documents land under
|
|
103
|
+
`~/.event4u/agent-config/workspace/documents/`, **encrypted at
|
|
104
|
+
rest** (Phase 8) with the user's per-machine key.
|
|
105
|
+
|
|
106
|
+
Output documents are local to each user. The team shares **inputs**
|
|
107
|
+
(prompts, role experiences, knowledge sources). The team does
|
|
108
|
+
**not** share **outputs** (offers, mails, memos) through this
|
|
109
|
+
recipe — those are user-private until manually saved to the team
|
|
110
|
+
share.
|
|
111
|
+
|
|
112
|
+
## Optional: publish the overrides as an npm pack
|
|
113
|
+
|
|
114
|
+
Once the shared overrides repo is stable, the maintainer may
|
|
115
|
+
publish it as a thin npm package:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# inside the overrides repo
|
|
119
|
+
npm init --scope=@your-org
|
|
120
|
+
# package.json names: "@your-org/agent-config-team"
|
|
121
|
+
npm publish --access restricted
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
New team members then `npm install --global @your-org/agent-config-team`
|
|
125
|
+
instead of cloning the repo. The package's `postinstall` script
|
|
126
|
+
creates the same symlinks. This is **optional**; the git-clone path
|
|
127
|
+
above works fine.
|
|
128
|
+
|
|
129
|
+
## What this recipe does not give you
|
|
130
|
+
|
|
131
|
+
- **No SSO.** Each user authenticates to their host agent (Claude
|
|
132
|
+
Code, etc.) independently.
|
|
133
|
+
- **No central policy enforcement.** Overrides ship via git; users
|
|
134
|
+
can locally edit them.
|
|
135
|
+
- **No shared output store.** Customer-facing documents stay on the
|
|
136
|
+
user's laptop. If the team needs shared output, they save / commit
|
|
137
|
+
the document file to the team share manually.
|
|
138
|
+
- **No org-mode threat model.** This recipe is single-user-per-machine
|
|
139
|
+
with team-level input sharing. The org-mode threats (cross-user
|
|
140
|
+
policy enforcement, audit log centralisation) are explicitly out
|
|
141
|
+
of scope; see [`team-deployment-posture`](team-deployment-posture.md).
|
|
142
|
+
|
|
143
|
+
## Cross-references
|
|
144
|
+
|
|
145
|
+
- Posture: [`team-deployment-posture`](team-deployment-posture.md).
|
|
146
|
+
- Workspace: [`docs/contracts/daily-workspace.md`](../contracts/daily-workspace.md).
|
|
147
|
+
- Knowledge ingestion: [`docs/contracts/local-knowledge-ingestion.md`](../contracts/local-knowledge-ingestion.md).
|
|
148
|
+
- Role experiences: [`docs/contracts/role-experience.md`](../contracts/role-experience.md).
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Team Deployment Posture
|
|
2
|
+
|
|
3
|
+
> **Status** · v0 · 2026-05-24. Phase 9 of
|
|
4
|
+
> [`road-to-employee-product-and-external-proof.md`](../../agents/roadmaps/road-to-employee-product-and-external-proof.md).
|
|
5
|
+
> Codifies what is shipped today, what stays cancelled-with-reason,
|
|
6
|
+
> and what is reachable via existing primitives — so feedback rounds
|
|
7
|
+
> 9+ asking "team SSO when?" land on a written answer.
|
|
8
|
+
|
|
9
|
+
## Where agent-config sits today
|
|
10
|
+
|
|
11
|
+
| Surface | Status |
|
|
12
|
+
|---|---|
|
|
13
|
+
| Single-user workspace | **Shipped** (Phases 4–7 of this roadmap, single-user / single-machine) |
|
|
14
|
+
| Small-team via shared overrides | **Shipped** (existing primitives — see [`small-team-recipe`](small-team-recipe.md)) |
|
|
15
|
+
| Organization mode (SSO, central policy, OAuth connectors) | **Cancelled-with-reason** — tracked in successor roadmap stubs |
|
|
16
|
+
|
|
17
|
+
## Shipped — what works today
|
|
18
|
+
|
|
19
|
+
The phases below this section, once implemented, deliver:
|
|
20
|
+
|
|
21
|
+
- A daily workspace browser tab (Phase 4) — per-user, local-only.
|
|
22
|
+
- Document workflows (Phase 5) — offer / mail / memo / brief /
|
|
23
|
+
video-script with local revision history and export.
|
|
24
|
+
- Plain explain mode (Phase 6) — role-aware translation of the
|
|
25
|
+
memory-trust surface.
|
|
26
|
+
- Local analytics (Phase 7) — top prompts, completion rate,
|
|
27
|
+
session length; never leaves the machine.
|
|
28
|
+
- At-rest encryption (Phase 8) — AES-256-GCM with OS keyring,
|
|
29
|
+
default on from workspace v1.0.
|
|
30
|
+
|
|
31
|
+
All of these run on **one machine, one OS user, one workspace**. No
|
|
32
|
+
remote backend. No shared state. No sign-on screen.
|
|
33
|
+
|
|
34
|
+
## Reachable via existing primitives — small-team mode
|
|
35
|
+
|
|
36
|
+
A team of 3–10 people can use the package collaboratively today
|
|
37
|
+
without any code change, by leaning on three existing primitives:
|
|
38
|
+
|
|
39
|
+
| Primitive | What it gives the team |
|
|
40
|
+
|---|---|
|
|
41
|
+
| `agents/overrides/` repo, shared via git | Shared prompts, role experiences, glossaries, skills overrides |
|
|
42
|
+
| Knowledge ingestion from a shared NAS / SharePoint mount | Each user runs `/knowledge:ingest` against the same mount; per-user index, same content |
|
|
43
|
+
| Manual prompt-pack distribution via npm `@event4u/agent-config-<team>` | Team publishes a thin pack of role experiences as a private npm package |
|
|
44
|
+
|
|
45
|
+
The recipe lives in [`small-team-recipe`](small-team-recipe.md).
|
|
46
|
+
|
|
47
|
+
## Cancelled-with-reason — organization mode
|
|
48
|
+
|
|
49
|
+
The prior archived `road-to-internal-ai-os-deployment.md` Phases 2–5
|
|
50
|
+
were cancelled under Hard-Floor (no real first customer, no audit
|
|
51
|
+
funding, no recruit-session signal). Phase 9 **does not reactivate
|
|
52
|
+
them**. The cancellations stand:
|
|
53
|
+
|
|
54
|
+
| Cancelled surface | Reason | Successor roadmap (stub) |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| **SSO / OIDC sign-on** | No customer requires it. Auth surface is auth-adjacent — `engineering-safety-floor` Hard-Floor on adoption without a funded security audit. | `road-to-team-sso.md` |
|
|
57
|
+
| **Central policy enforcement** | Multi-tenant policy without SSO is a half-solution. Wait for SSO. | `road-to-central-policy.md` |
|
|
58
|
+
| **Team-shared overrides server** | Shared-overrides-via-git already works for the small-team case. Server only makes sense once the org-mode threshold is reached. | `road-to-team-context.md` |
|
|
59
|
+
| **OAuth connectors (Google, Slack, M365)** | Per-connector OAuth flow is a permanent footprint we can't ship without an org user agreeing to scope it. | `road-to-internal-connectors.md` |
|
|
60
|
+
|
|
61
|
+
Each successor roadmap is an empty-named stub today; activation
|
|
62
|
+
requires a recruited team customer plus a human-reviewed security
|
|
63
|
+
audit. Until then, the answer to "team SSO when?" is: **not on this
|
|
64
|
+
package, not on this roadmap**.
|
|
65
|
+
|
|
66
|
+
## Decision posture going forward
|
|
67
|
+
|
|
68
|
+
- **Default answer to org-mode requests**: point at this document.
|
|
69
|
+
Do not re-open the cancellation without a recruited customer +
|
|
70
|
+
funded audit.
|
|
71
|
+
- **Default answer to small-team requests**: point at
|
|
72
|
+
[`small-team-recipe`](small-team-recipe.md). The recipe is
|
|
73
|
+
sufficient for 3–10 people, no code change required.
|
|
74
|
+
- **Default answer to single-user requests**: workspace + Phases
|
|
75
|
+
4–7 deliver the daily experience.
|
|
76
|
+
|
|
77
|
+
The Hard-Floor item stays in force. Nothing in Phase 9 lifts it.
|
|
78
|
+
The successor roadmap stubs exist so cross-references resolve and
|
|
79
|
+
so a future maintainer (or external contributor with funding) can
|
|
80
|
+
pick them up without re-deriving the cancellation rationale.
|
|
81
|
+
|
|
82
|
+
## Cross-references
|
|
83
|
+
|
|
84
|
+
- Recipe: [`small-team-recipe`](small-team-recipe.md).
|
|
85
|
+
- Archived: `agents/roadmaps/archive/road-to-internal-ai-os-deployment.md`.
|
|
86
|
+
- Stubs (created by Phase 9 Step 4):
|
|
87
|
+
- `agents/roadmaps/stubs/road-to-team-sso.md`
|
|
88
|
+
- `agents/roadmaps/stubs/road-to-central-policy.md`
|
|
89
|
+
- `agents/roadmaps/stubs/road-to-team-context.md`
|
|
90
|
+
- `agents/roadmaps/stubs/road-to-internal-connectors.md`
|
|
91
|
+
- Engineering safety floor: [`.augment/rules/non-destructive-by-default.md`](../../.augment/rules/non-destructive-by-default.md).
|
|
@@ -8,10 +8,14 @@
|
|
|
8
8
|
|
|
9
9
|
> **Eval-gated messaging note.** Until `task bench --corpus non-dev` reports `selection_accuracy >= 0.60` (step-12 Phase 1 exit), this page is documentation, not marketing. The skills listed below are the candidates the corpus tests against; their description quality is what the eval validates.
|
|
10
10
|
|
|
11
|
+
> **Deployment posture.** Single-user workspace today (one machine, one user — `npx @event4u/agent-config init`). Small team today (3–10 people) via shared `agents/overrides/` Git repo + shared NAS for knowledge — recipe: [`docs/deploy/small-team-recipe.md`](deploy/small-team-recipe.md). Organization mode (SSO · central policy · team context · internal connectors) is **not started** — tracked under [`agents/roadmaps/stubs/`](../agents/roadmaps/stubs/README.md) with explicit gating (recruited customer + funded audit + maintainer ADR). Rationale: [`docs/deploy/team-deployment-posture.md`](deploy/team-deployment-posture.md).
|
|
12
|
+
|
|
11
13
|
---
|
|
12
14
|
|
|
13
15
|
## Creator (writer, marketer, indie content shop)
|
|
14
16
|
|
|
17
|
+
> **Tailored role experience available →** [`agents/roles/content-creator/`](../agents/roles/content-creator/index.md) — three first tasks, priority-ordered skill shortlist, prompt scaffolds. Status `draft` until recruit-session 02 lands.
|
|
18
|
+
|
|
15
19
|
**You want this if:** you draft blog posts, marketing emails, launch copy, or release announcements and want a writing assistant that holds a defined brand voice across surfaces. You need brand-voice discipline more than code-quality enforcement. You will spend most of your time in Claude Desktop / ChatGPT, not in a terminal.
|
|
16
20
|
|
|
17
21
|
- [`voice-and-tone-design`](../.agent-src/skills/voice-and-tone-design/SKILL.md) — define and audit brand voice (voice attributes, tone-by-context matrix).
|
|
@@ -30,6 +34,13 @@ Cinematic-blueprint approach: the agent expands your script into a 12-block scen
|
|
|
30
34
|
|
|
31
35
|
`AIV_DRYRUN=true` is the mandatory default — no provider call, no spend until you opt in.
|
|
32
36
|
|
|
37
|
+
**Worked example — one-line idea to stitched cut, four commands:**
|
|
38
|
+
|
|
39
|
+
1. `/video:from-script "kurzes Werbevideo für ein Galabau-Projekt"` — agent expands the one-line idea into a 12-block blueprint, locks the character identity, and prints the provider-tuned prompt set.
|
|
40
|
+
2. `/video:storyboard` — review the 12-block scene plan before any provider call; edit blocks inline (camera, lighting, blocking, motion) until the storyboard reads as intended.
|
|
41
|
+
3. `/video:scene` — render one scene at a time against the configured provider adapter; iterate on the motion + audio prompt without paying for the full clip.
|
|
42
|
+
4. `/video:stitch` — assemble the rendered scenes into the final clip via ffmpeg, with the character-lock JSON enforcing identity across cuts.
|
|
43
|
+
|
|
33
44
|
**Try the first win →** [`pack-ai-video/FIRST_WIN.md`](../packages/pack-ai-video/FIRST_WIN.md) — one-line idea to a provider-tuned motion prompt in ~12 minutes.
|
|
34
45
|
|
|
35
46
|
> **What this is not:** the package does **not** host a video model. It orchestrates prompts against the provider you select (Veo, Kling, Sora, Runway, …). Trust level is set by the provider's adapter lifecycle tier — see [`provider-lifecycle-discipline`](../.agent-src/rules/provider-lifecycle-discipline.md). You pay the provider directly, the package never sees your API key.
|
|
@@ -66,6 +77,8 @@ Cinematic-blueprint approach: the agent expands your script into a 12-block scen
|
|
|
66
77
|
|
|
67
78
|
## Consultant (advisory, freelance, fractional)
|
|
68
79
|
|
|
80
|
+
> **Tailored role experience available →** [`agents/roles/consultant/`](../agents/roles/consultant/index.md) — three first tasks (client-brief refinement, investor memo, deck outline), priority-ordered skill shortlist. Status `draft` until recruit-session 03 lands.
|
|
81
|
+
|
|
69
82
|
**You want this if:** you sell discovery, positioning, competitive analysis, or roadmap audits. Output is briefs and slide content for a client, not code. You need defensible methodology behind every deliverable.
|
|
70
83
|
|
|
71
84
|
- [`discovery-interview`](../.agent-src/skills/discovery-interview/SKILL.md) — switch-event JTBD guides, bias audit, falsifiable hypothesis.
|
|
@@ -76,6 +89,20 @@ Cinematic-blueprint approach: the agent expands your script into a 12-block scen
|
|
|
76
89
|
|
|
77
90
|
---
|
|
78
91
|
|
|
92
|
+
## Galabau owner (Garten- und Landschaftsbau, small-business operator)
|
|
93
|
+
|
|
94
|
+
> **Tailored role experience available →** [`agents/roles/galabau/`](../agents/roles/galabau/index.md) — three first tasks (offer drafting, customer-email reply, project-brief refinement), priority-ordered skill shortlist. Status `draft` until recruit-session 01 lands.
|
|
95
|
+
|
|
96
|
+
**You want this if:** you run or co-run a small Garten-und-Landschaftsbau shop and draft customer offers, customer emails, and project briefs every week — usually after the on-site day is done. You want a writing assistant that knows your tone, holds it across customers, and turns a one-paragraph project sketch into a structured document you can send the next morning.
|
|
97
|
+
|
|
98
|
+
- [`refine-prompt`](../.agent-src/skills/refine-prompt/SKILL.md) — tighten fuzzy customer briefs before any drafting so the agent does not invent scope.
|
|
99
|
+
- [`voice-and-tone-design`](../.agent-src/skills/voice-and-tone-design/SKILL.md) — lock the shop tone so offers and emails read consistent across customers.
|
|
100
|
+
- [`doc-coauthoring`](../.agent-src/skills/doc-coauthoring/SKILL.md) — section-by-section drafting for longer offers; never one giant generation.
|
|
101
|
+
|
|
102
|
+
**Install path:** **MCP recommended.** Claude Desktop opens, the package shows up as a tool, no terminal required. See [`docs/mcp.md`](mcp.md). CLI install is the right path only if you also sit in this repo with code-shaped work.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
79
106
|
## Go-To-Market (sales, marketing ops, RevOps)
|
|
80
107
|
|
|
81
108
|
**You want this if:** you own pipeline shape, forecast accuracy, launch sequencing, or post-launch comms. You need deal-level rigor (MEDDIC, exit criteria) and narrative skills (release comms, messaging) in the same agent.
|
package/docs/getting-started.md
CHANGED
|
@@ -146,7 +146,7 @@ Your agent now understands slash commands:
|
|
|
146
146
|
| `/quality-fix` | Run and fix all quality checks |
|
|
147
147
|
| `/chat-history` | Inspect the persistent chat-history log (read-only `show`) |
|
|
148
148
|
|
|
149
|
-
→ [Browse all
|
|
149
|
+
→ [Browse all 136 active commands](../.agent-src/commands/)
|
|
150
150
|
|
|
151
151
|
---
|
|
152
152
|
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Local analytics — a 3-minute walkthrough
|
|
2
|
+
|
|
3
|
+
> Phase 7 of [`road-to-employee-product-and-external-proof`](../../agents/roadmaps/road-to-employee-product-and-external-proof.md).
|
|
4
|
+
> Contract: [`docs/contracts/local-analytics.md`](../contracts/local-analytics.md).
|
|
5
|
+
|
|
6
|
+
## What this is
|
|
7
|
+
|
|
8
|
+
A **local-only** event log of your workspace activity. The package never
|
|
9
|
+
POSTs these records anywhere. Storage is a single append-only JSONL file
|
|
10
|
+
under your home directory; pruning is a 90-day rolling window.
|
|
11
|
+
|
|
12
|
+
If you want to know *"which prompts do I actually run on Tuesday
|
|
13
|
+
mornings?"* — this is the file that knows. If you don't want that
|
|
14
|
+
question answered, flip one flag and the file never opens.
|
|
15
|
+
|
|
16
|
+
## Where it lives
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
~/.event4u/agent-config/workspace/analytics/
|
|
20
|
+
├── events.jsonl # one workspace_event/v0 record per line
|
|
21
|
+
└── retention.lock # presence = a prune pass is running
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
One event per line. Schema is `workspace_event/v0` (matches the
|
|
25
|
+
3.1.0 telemetry SDK vocabulary, but the transports never touch each
|
|
26
|
+
other — the SDK is the undeployed Worker surface, this is your disk).
|
|
27
|
+
|
|
28
|
+
## What's collected
|
|
29
|
+
|
|
30
|
+
Closed event set (rejected if not on the list):
|
|
31
|
+
|
|
32
|
+
| Event | When |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `launcher.opened` | Workspace tab opens. |
|
|
35
|
+
| `launcher.task_picked` | User clicks a task in the launcher. |
|
|
36
|
+
| `launcher.task_launched` | Host agent receives the rendered prompt. |
|
|
37
|
+
| `session.started` / `session.host_turn` / `session.completed` | Conversation lifecycle. |
|
|
38
|
+
| `document.created` / `document.edited` / `document.exported` | Phase 5 document workflows. |
|
|
39
|
+
| `explain.opened` / `explain.mode_toggled` / `why.invoked` | Phase 6 explain mode. |
|
|
40
|
+
| `knowledge.queried` / `knowledge.source_clicked` | Phase 2 knowledge pane interactions. |
|
|
41
|
+
|
|
42
|
+
Each record carries a UTC timestamp, the schema version, and a tiny
|
|
43
|
+
`data` dict (role, task, host_tier, duration_ms — never prompt or
|
|
44
|
+
response bodies).
|
|
45
|
+
|
|
46
|
+
## How to read it
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Render the last 30 days as markdown
|
|
50
|
+
python3 packages/core/installer/python/workspace_analytics.py show
|
|
51
|
+
|
|
52
|
+
# Last 24 h, JSON
|
|
53
|
+
python3 packages/core/installer/python/workspace_analytics.py show \
|
|
54
|
+
--window 24h --format json
|
|
55
|
+
|
|
56
|
+
# Filter to one role
|
|
57
|
+
python3 packages/core/installer/python/workspace_analytics.py show \
|
|
58
|
+
--role tradesperson --format csv
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Output shape (markdown):
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
# Workspace analytics — last 30d
|
|
65
|
+
|
|
66
|
+
## Top prompts
|
|
67
|
+
|
|
68
|
+
- `tradesperson` · `estimate` — 12
|
|
69
|
+
- `content-creator` · `script-video` — 7
|
|
70
|
+
- `consultant` · `weekly-memo` — 4
|
|
71
|
+
|
|
72
|
+
## Launcher → completion rate per role
|
|
73
|
+
|
|
74
|
+
- `tradesperson` — 83% (12 launched · 10 completed)
|
|
75
|
+
- `content-creator` — 71% (7 launched · 5 completed)
|
|
76
|
+
|
|
77
|
+
**Average session length:** 3m 41s
|
|
78
|
+
**Knowledge sources clicked:** 14
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## How to opt out
|
|
82
|
+
|
|
83
|
+
Two equivalent switches — either short-circuits before any file opens.
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Env (per-shell)
|
|
87
|
+
export AGENT_CONFIG_NO_LOCAL_ANALYTICS=1
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```yaml
|
|
91
|
+
# .agent-settings.yml (per-project)
|
|
92
|
+
analytics:
|
|
93
|
+
local: off
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
After either is in effect, `emit()` returns `False` and the JSONL is
|
|
97
|
+
never appended. The `show` command still works against existing data,
|
|
98
|
+
so you can opt out without losing what you already have.
|
|
99
|
+
|
|
100
|
+
## How to delete it
|
|
101
|
+
|
|
102
|
+
The file is plain JSONL. Delete it:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
rm -rf ~/.event4u/agent-config/workspace/analytics/
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Or prune the rolling window manually:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
python3 packages/core/installer/python/workspace_analytics.py prune
|
|
112
|
+
# → pruned 47 event(s)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`prune` drops anything older than 90 days. The lock file prevents two
|
|
116
|
+
concurrent passes from racing each other.
|
|
117
|
+
|
|
118
|
+
## What this guide does not cover
|
|
119
|
+
|
|
120
|
+
- **Remote telemetry** — that's the Worker SDK (`packages/telemetry/`).
|
|
121
|
+
Deployment is out of v0 scope; kill-switch defaults to disabled.
|
|
122
|
+
- **Workspace UI** — Phase 4 builds the browser tab that emits these
|
|
123
|
+
events. See [`docs/contracts/daily-workspace.md`](../contracts/daily-workspace.md).
|
|
124
|
+
- **Encryption at rest** — Phase 8. Until then, the JSONL is plaintext
|
|
125
|
+
on your local disk.
|