llm-wb 0.1.0-beta.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.
Files changed (170) hide show
  1. package/.agentic/00.chat/README.md +78 -0
  2. package/.agentic/00.chat/checklists/before-commit.md +195 -0
  3. package/.agentic/00.chat/checklists/llm-workbench-public-beta.md +94 -0
  4. package/.agentic/00.chat/commands/README.md +108 -0
  5. package/.agentic/00.chat/migration-plan.md +132 -0
  6. package/.agentic/00.chat/skills/session-summary.md +48 -0
  7. package/.agentic/00.chat/standards/llm-workbench-public-beta-contract.md +216 -0
  8. package/.agentic/00.chat/standards/main-refresh-conflict-types.md +358 -0
  9. package/.agentic/00.chat/workflows/README.md +40 -0
  10. package/.agentic/00.chat/workflows/bootstrap-chat-workbench-repo.md +212 -0
  11. package/.agentic/00.chat/workflows/chat-cleanup.md +102 -0
  12. package/.agentic/00.chat/workflows/chat-commit.md +56 -0
  13. package/.agentic/00.chat/workflows/chat-promote-to-main.md +169 -0
  14. package/.agentic/00.chat/workflows/chat-refresh-from-main.md +242 -0
  15. package/.agentic/00.chat/workflows/chat-reporting.md +69 -0
  16. package/.agentic/00.chat/workflows/chat-start.md +173 -0
  17. package/.agentic/00.chat/workflows/chat-upstream-reusable-lesson.md +123 -0
  18. package/.agentic/shared/standards/README.md +32 -0
  19. package/.agentic/shared/standards/upstream-repo-bootstrap.md +131 -0
  20. package/.agentic/shared/workflows/README.md +35 -0
  21. package/.agentic/shared/workflows/capability-resolution-workflow.md +189 -0
  22. package/.agentic/shared/workflows/change-shared-process.md +92 -0
  23. package/.cursor/rules/llm-workbench.mdc +17 -0
  24. package/.github/copilot-instructions.md +16 -0
  25. package/AGENTS.md +63 -0
  26. package/CLAUDE.md +16 -0
  27. package/CONTRIBUTING.md +57 -0
  28. package/LICENSE +21 -0
  29. package/LLM_WORKBENCH.md +17 -0
  30. package/README.md +98 -0
  31. package/SECURITY.md +44 -0
  32. package/bin/llm-workbench.js +672 -0
  33. package/docs/00.chat/README.md +47 -0
  34. package/docs/00.chat/llm-workbench-acceptance-matrix.md +55 -0
  35. package/docs/00.chat/script-layout.md +107 -0
  36. package/docs/adapting-to-your-repo.md +29 -0
  37. package/docs/concepts.md +38 -0
  38. package/docs/install.md +114 -0
  39. package/docs/public-beta-contract.md +45 -0
  40. package/docs/workflows.md +103 -0
  41. package/examples/minimal-repo/README.md +13 -0
  42. package/package.json +93 -0
  43. package/scripts/00.chat/README.md +46 -0
  44. package/scripts/00.chat/bootstrap/README.md +35 -0
  45. package/scripts/00.chat/bootstrap/audit-chat-bootstrap-file-set/README.md +39 -0
  46. package/scripts/00.chat/bootstrap/audit-chat-bootstrap-file-set/script.sh +213 -0
  47. package/scripts/00.chat/closeout/README.md +30 -0
  48. package/scripts/00.chat/closeout/build-closeout-prompt/README.md +35 -0
  49. package/scripts/00.chat/closeout/build-closeout-prompt/script.sh +124 -0
  50. package/scripts/00.chat/command/README.md +31 -0
  51. package/scripts/00.chat/command/close/README.md +30 -0
  52. package/scripts/00.chat/command/close/script.sh +25 -0
  53. package/scripts/00.chat/command/dispatcher/README.md +46 -0
  54. package/scripts/00.chat/command/dispatcher/script.sh +91 -0
  55. package/scripts/00.chat/command/dispatcher/smoke-test.sh +168 -0
  56. package/scripts/00.chat/command/new/README.md +32 -0
  57. package/scripts/00.chat/command/new/script.sh +28 -0
  58. package/scripts/00.chat/command/open-window/README.md +38 -0
  59. package/scripts/00.chat/command/open-window/script.sh +25 -0
  60. package/scripts/00.chat/command/package-scripts/README.md +34 -0
  61. package/scripts/00.chat/command/package-scripts/smoke-test.sh +113 -0
  62. package/scripts/00.chat/git/README.md +30 -0
  63. package/scripts/00.chat/git/cleanup-empty-chat-branches/README.md +36 -0
  64. package/scripts/00.chat/git/cleanup-empty-chat-branches/script.sh +243 -0
  65. package/scripts/00.chat/git/cleanup-empty-chat-branches/smoke-test.sh +136 -0
  66. package/scripts/00.chat/local-merge/README.md +30 -0
  67. package/scripts/00.chat/local-merge/list-active-chat-branches/README.md +29 -0
  68. package/scripts/00.chat/local-merge/list-active-chat-branches/script.sh +109 -0
  69. package/scripts/00.chat/local-merge/report-chat-branch-overlaps/README.md +29 -0
  70. package/scripts/00.chat/local-merge/report-chat-branch-overlaps/script.sh +142 -0
  71. package/scripts/00.chat/local-merge/verify-chat-ready-to-merge-local-main/README.md +33 -0
  72. package/scripts/00.chat/local-merge/verify-chat-ready-to-merge-local-main/script.sh +345 -0
  73. package/scripts/00.chat/local-merge/verify-chat-ready-to-merge-local-main/smoke-test.sh +244 -0
  74. package/scripts/00.chat/main-refresh/README.md +39 -0
  75. package/scripts/00.chat/main-refresh/apply-rehearsed-refresh/README.md +32 -0
  76. package/scripts/00.chat/main-refresh/apply-rehearsed-refresh/script.sh +198 -0
  77. package/scripts/00.chat/main-refresh/check-chat-is-current-with-main/README.md +30 -0
  78. package/scripts/00.chat/main-refresh/check-chat-is-current-with-main/script.sh +121 -0
  79. package/scripts/00.chat/main-refresh/classify-conflict/README.md +39 -0
  80. package/scripts/00.chat/main-refresh/classify-conflict/script.sh +169 -0
  81. package/scripts/00.chat/main-refresh/classify-conflict/smoke-test.sh +137 -0
  82. package/scripts/00.chat/main-refresh/classify-refresh-readiness/README.md +35 -0
  83. package/scripts/00.chat/main-refresh/classify-refresh-readiness/script.sh +171 -0
  84. package/scripts/00.chat/main-refresh/classify-refresh-readiness/smoke-test.sh +132 -0
  85. package/scripts/00.chat/main-refresh/rehearse-refresh-from-main/README.md +34 -0
  86. package/scripts/00.chat/main-refresh/rehearse-refresh-from-main/script.sh +124 -0
  87. package/scripts/00.chat/main-refresh/rehearse-refresh-from-main/smoke-test.sh +257 -0
  88. package/scripts/00.chat/main-refresh/show-main-update-status/README.md +31 -0
  89. package/scripts/00.chat/main-refresh/show-main-update-status/script.sh +73 -0
  90. package/scripts/00.chat/main-refresh/verify-conflict-audit/README.md +37 -0
  91. package/scripts/00.chat/main-refresh/verify-conflict-audit/script.sh +154 -0
  92. package/scripts/00.chat/main-refresh/verify-conflict-audit/smoke-test.sh +99 -0
  93. package/scripts/00.chat/metrics/README.md +35 -0
  94. package/scripts/00.chat/metrics/data/chat-pricing.json +107 -0
  95. package/scripts/00.chat/metrics/data/chat-pricing.schema.json +63 -0
  96. package/scripts/00.chat/metrics/estimate-chat-cost/README.md +40 -0
  97. package/scripts/00.chat/metrics/estimate-chat-cost/script.js +130 -0
  98. package/scripts/00.chat/migration/README.md +30 -0
  99. package/scripts/00.chat/migration/audit-chat-layer-migration/README.md +33 -0
  100. package/scripts/00.chat/migration/audit-chat-layer-migration/script.sh +127 -0
  101. package/scripts/00.chat/recovery/README.md +30 -0
  102. package/scripts/00.chat/recovery/import-active-paths-to-chat-worktree/README.md +76 -0
  103. package/scripts/00.chat/recovery/import-active-paths-to-chat-worktree/script.sh +212 -0
  104. package/scripts/00.chat/recovery/import-active-paths-to-chat-worktree/smoke-test.sh +162 -0
  105. package/scripts/00.chat/reporting/README.md +30 -0
  106. package/scripts/00.chat/reporting/generate-commit-log-summary/README.md +35 -0
  107. package/scripts/00.chat/reporting/generate-commit-log-summary/script.sh +299 -0
  108. package/scripts/00.chat/reporting/generate-commit-log-summary/smoke-test.sh +93 -0
  109. package/scripts/00.chat/reporting/report-chat-workspaces/README.md +32 -0
  110. package/scripts/00.chat/reporting/report-chat-workspaces/script.sh +82 -0
  111. package/scripts/00.chat/session-log/README.md +33 -0
  112. package/scripts/00.chat/session-log/check-commit-prerequisites/README.md +89 -0
  113. package/scripts/00.chat/session-log/check-commit-prerequisites/script.sh +121 -0
  114. package/scripts/00.chat/session-log/check-commit-prerequisites/smoke-test.sh +119 -0
  115. package/scripts/00.chat/session-log/check-commitlog-deletions/README.md +90 -0
  116. package/scripts/00.chat/session-log/check-commitlog-deletions/script.sh +131 -0
  117. package/scripts/00.chat/session-log/check-commitlog-deletions/smoke-test.sh +123 -0
  118. package/scripts/00.chat/session-log/checkpoint-chat-session-log/README.md +98 -0
  119. package/scripts/00.chat/session-log/checkpoint-chat-session-log/script.sh +126 -0
  120. package/scripts/00.chat/session-log/paths/README.md +38 -0
  121. package/scripts/00.chat/session-log/paths/lib.sh +133 -0
  122. package/scripts/00.chat/session-log/prepare-chat-session-before-commit/README.md +90 -0
  123. package/scripts/00.chat/session-log/prepare-chat-session-before-commit/script.sh +145 -0
  124. package/scripts/00.chat/session-log/read-current-chat-log/README.md +44 -0
  125. package/scripts/00.chat/session-log/read-current-chat-log/script.sh +92 -0
  126. package/scripts/00.chat/session-log/read-current-chat-log/smoke-test.sh +127 -0
  127. package/scripts/00.chat/session-log/record-chat-commit/README.md +133 -0
  128. package/scripts/00.chat/session-log/record-chat-commit/script.sh +394 -0
  129. package/scripts/00.chat/session-log/record-chat-commit/smoke-test.sh +227 -0
  130. package/scripts/00.chat/session-log/record-main-refresh-conflict/README.md +34 -0
  131. package/scripts/00.chat/session-log/record-main-refresh-conflict/script.sh +239 -0
  132. package/scripts/00.chat/session-log/rename-current-chat-log-folder/README.md +32 -0
  133. package/scripts/00.chat/session-log/rename-current-chat-log-folder/script.sh +112 -0
  134. package/scripts/00.chat/session-log/update-chat-log/README.md +32 -0
  135. package/scripts/00.chat/session-log/update-chat-log/script.sh +294 -0
  136. package/scripts/00.chat/startup/README.md +37 -0
  137. package/scripts/00.chat/startup/auto-start-missing-session/README.md +113 -0
  138. package/scripts/00.chat/startup/auto-start-missing-session/script.sh +54 -0
  139. package/scripts/00.chat/startup/resolve-current-chat-session/README.md +57 -0
  140. package/scripts/00.chat/startup/resolve-current-chat-session/script.sh +47 -0
  141. package/scripts/00.chat/startup/resolve-current-chat-session/smoke-test.sh +130 -0
  142. package/scripts/00.chat/startup/start-chat-session/README.md +197 -0
  143. package/scripts/00.chat/startup/start-chat-session/script.sh +330 -0
  144. package/scripts/00.chat/startup/start-chat-session/smoke-test.sh +182 -0
  145. package/scripts/00.chat/startup/start-new-chat/README.md +31 -0
  146. package/scripts/00.chat/startup/start-new-chat/script.sh +29 -0
  147. package/scripts/00.chat/transcript/README.md +36 -0
  148. package/scripts/00.chat/transcript/discover-codex-session-log/README.md +32 -0
  149. package/scripts/00.chat/transcript/discover-codex-session-log/script.sh +106 -0
  150. package/scripts/00.chat/transcript/register-codex-session-log/README.md +32 -0
  151. package/scripts/00.chat/transcript/register-codex-session-log/script.sh +115 -0
  152. package/scripts/00.chat/worktree/README.md +32 -0
  153. package/scripts/00.chat/worktree/check-write-location/README.md +87 -0
  154. package/scripts/00.chat/worktree/check-write-location/script.sh +95 -0
  155. package/scripts/00.chat/worktree/dirty-worktree-check/README.md +77 -0
  156. package/scripts/00.chat/worktree/dirty-worktree-check/script.sh +93 -0
  157. package/scripts/00.chat/worktree/ensure-chat-worktree/README.md +33 -0
  158. package/scripts/00.chat/worktree/ensure-chat-worktree/script.sh +132 -0
  159. package/scripts/00.chat/worktree/open-window/README.md +34 -0
  160. package/scripts/00.chat/worktree/open-window/script.sh +131 -0
  161. package/scripts/00.chat/worktree/paths/README.md +32 -0
  162. package/scripts/00.chat/worktree/paths/lib.sh +71 -0
  163. package/scripts/01.harness/artifact-metadata/check-headers/script.sh +522 -0
  164. package/scripts/01.harness/artifact-metadata/check-headers/smoke-test.sh +48 -0
  165. package/scripts/01.harness/check-deterministic-process-drift.sh +416 -0
  166. package/scripts/01.harness/check-governed-script-command-drift.sh +184 -0
  167. package/scripts/01.harness/run-governed-script.sh +178 -0
  168. package/scripts/install.sh +503 -0
  169. package/scripts/uninstall.sh +199 -0
  170. package/tests/smoke-test-install.sh +70 -0
@@ -0,0 +1,55 @@
1
+ <!-- agentic-artifact:
2
+ schema: agentic-artifact/v2
3
+ id: chat.docs.llm-workbench-acceptance-matrix
4
+ version: 1
5
+ status: active
6
+ layer: 00.chat
7
+ domain: portability
8
+ disciplines:
9
+ - agentic
10
+ kind: doc
11
+ purpose: Map llm-workbench public-beta invariants to enforcing artifacts and checks.
12
+ portability:
13
+ class: required
14
+ targets:
15
+ - llm-workbench
16
+ used_by:
17
+ - id: chat.standards.llm-workbench-public-beta-contract
18
+ path: .agentic/00.chat/standards/llm-workbench-public-beta-contract.md
19
+ - id: chat.script.upstream.validate-llm-workbench-portability.readme
20
+ path: scripts/00.chat/upstream/validate-llm-workbench-portability/README.md
21
+ -->
22
+ # llm-workbench Acceptance Matrix
23
+
24
+ This matrix maps the public-beta contract to the artifacts that enforce it.
25
+
26
+ | Invariant | Primary Artifacts | Required Proof |
27
+ | --- | --- | --- |
28
+ | No durable chat classification | `chat-start.md`, `start-chat-session`, portability validator | Startup metadata has no whole-chat `layer`, `mode`, or `workflow` fields. |
29
+ | Standalone public export | Bootstrap planner, artifact metadata checker, portability validator | Generated public repo and installed target omit source-only trees/scripts and pass `check-headers --all`. |
30
+ | No source-specific generic gates | `prepare-chat-session-before-commit`, before-commit checklist, portability validator | Generic chat surfaces do not hard-code RAG/rulebook gates; optional gates use neutral hooks. |
31
+ | Provider-neutral transcript metrics | `record-chat-commit`, transcript scripts, startup templates | Missing transcript metrics are portable by default; Codex discovery is opt-in adapter behavior. |
32
+ | Provider-neutral cost metrics | `estimate-chat-cost`, `scripts/00.chat/metrics/data/`, record-commit smoke test | Default pricing is `portable-unpriced`; explicit profile overrides record cost. |
33
+ | Safe install/uninstall | Public install/uninstall templates, install smoke, portability validator | Dry run is read-only, apply preserves user files, uninstall removes only manifest-owned material. |
34
+ | Thin assistant adapters | Public adapter templates, install manifest, portability validator | Adapters route to chat-start and avoid provider-specific policy duplication. |
35
+ | Public CLI wrapper | `bin/llm-workbench.js`, package `bin`, package `files`, CLI smoke | `npm pack --dry-run` includes the CLI and required scripts; `init`, `list`, `sessions list`, `new`, `commit`, and `merge-main` are smoke-tested. |
36
+ | CLI/code-assistant robustness | Dispatcher, startup JSON mode, portability validator | `llm-wb new --json` works; stripped executable bits do not break dispatch. |
37
+ | Temporary eval loop | Public-beta checklist, closeout evidence | Temporary evals fail first, pass after implementation, and are removed before closeout. |
38
+ | Documentation truthfulness | Public README/docs/templates | Public docs use the accepted standalone/provider-neutral claim and avoid universal-assistant overclaims. |
39
+
40
+ The permanent acceptance entrypoint is:
41
+
42
+ ```bash
43
+ bash scripts/00.chat/upstream/validate-llm-workbench-portability/script.sh
44
+ ```
45
+
46
+ Changes that discover a new edge case should add that edge case to the
47
+ portability validator or a focused smoke test before closeout.
48
+
49
+ Source-only public-export exclusions include `.agentic/agentic`, `.docs`,
50
+ `.scripts`, `.agentic/01.harness`, `.agentic/docs`, `.agentic/scripts`, and
51
+ `scripts/00.chat/classification`, plus maintainer-history ADR surfaces such as
52
+ `docs/00.chat/public-chat-workbench-adrs.md` and
53
+ `docs/harness/architecture/adrs/`. Public `scripts/01.harness` is limited to
54
+ portable validation and governed-runner helpers; source-maintenance migration,
55
+ taxonomy-generation, and rule-test scripts must not be exported or installed.
@@ -0,0 +1,107 @@
1
+ <!-- agentic-artifact:
2
+ schema: agentic-artifact/v2
3
+ id: chat.script-layout
4
+ version: 1
5
+ status: active
6
+ layer: 00.chat
7
+ domain: scripts
8
+ disciplines:
9
+ - agentic
10
+ kind: doc
11
+ purpose: Explain the current script layout after the chat harness script migration.
12
+ portability:
13
+ class: required
14
+ targets:
15
+ - llm-workbench
16
+ used_by:
17
+ - id: harness.readme
18
+ - id: harness.architecture.adr.0017-organize-scripts-by-owner-domain-and-capability
19
+ - id: harness.architecture.adr.0020-use-scripts-for-layer-command-surfaces
20
+ -->
21
+ # Script Layout
22
+
23
+ This document describes the current script layout. Public workbench users
24
+ should treat this file and the current scripts as the operational source of
25
+ truth; maintainer ADRs remain source-side history only.
26
+
27
+ ## Current Shape
28
+
29
+ Chat lifecycle scripts live under:
30
+
31
+ ```txt
32
+ scripts/00.chat/<domain>/<capability>/
33
+ ```
34
+
35
+ Shared harness governance scripts live under:
36
+
37
+ ```txt
38
+ scripts/01.harness/
39
+ ```
40
+
41
+ Future RAG/rulebook, product, and deployment command surfaces should live under:
42
+
43
+ ```txt
44
+ scripts/02.rag-rulebook/<domain>/<capability>/
45
+ scripts/03.product/<domain>/<capability>/
46
+ scripts/04.deploy/<domain>/<capability>/
47
+ ```
48
+
49
+ That split is intentional:
50
+
51
+ - `scripts/00.chat/` owns chat startup, commands, reporting, session logs,
52
+ recovery, worktrees, main refresh, local merge checks, and upstream bootstrap
53
+ support.
54
+ - `scripts/01.harness/` owns cross-layer harness checks such as metadata,
55
+ deterministic process drift, governed command drift, and the governed script
56
+ runner.
57
+ - `scripts/02.rag-rulebook/` is reserved for future standalone RAG/rulebook
58
+ automation such as corpus extraction, rulebook index generation, chunk
59
+ generation, graph expansion, and context-packet validation.
60
+ - `scripts/03.product/` is reserved for future product-owned automation such as
61
+ entity-builder commands, code generation, migration helpers, product
62
+ validation, and developer CLI capabilities.
63
+ - `scripts/04.deploy/` is reserved for future deployment-owned automation
64
+ such as environment checks, release helpers, deployment validation, and
65
+ operational command wrappers.
66
+
67
+ Use `scripts/` as the canonical executable command surface. The term `tools`
68
+ describes automation capabilities, not a separate top-level command namespace.
69
+ Future MCP exposure should wrap stable script capabilities through an explicit
70
+ registry or manifest instead of importing layer internals directly.
71
+
72
+ Do not add new chat lifecycle scripts under `scripts/shared/chat/` or
73
+ `scripts/shared/git/`. Those were compatibility locations from the earlier
74
+ layout and are now retired.
75
+
76
+ ## Capability Folders
77
+
78
+ Each capability folder should contain the files that help a reader understand,
79
+ run, and test that capability:
80
+
81
+ - `script.sh`, `script.js`, or `lib.sh` for the implementation
82
+ - `smoke-test.sh` or another focused validation file when behavior needs proof
83
+ - `README.md` explaining the purpose, inputs, effects, and boundaries
84
+
85
+ Domain folders also have a `README.md` that explains how the capabilities in
86
+ that domain fit together.
87
+
88
+ ## Public Surface
89
+
90
+ Humans should usually use `package.json` `chat:*` scripts. Those package
91
+ scripts delegate to canonical `scripts/00.chat/...` paths.
92
+
93
+ Harness workflows, checklists, standards, and gates should point directly at
94
+ canonical `scripts/<numbered-layer>/...` paths for the layer that owns the
95
+ behavior.
96
+
97
+ ## Historical Paths
98
+
99
+ Historical documents may mention retired paths, but should do so as migration
100
+ history:
101
+
102
+ - say what previously lived there
103
+ - name the current canonical path or say the behavior was retired
104
+ - avoid runnable examples that make the old path look current
105
+
106
+ Negative tests may create retired paths in throwaway repositories when they are
107
+ proving the governed runner rejects old compatibility surfaces.
@@ -0,0 +1,29 @@
1
+ # Adapting To Your Repo
2
+
3
+ The workbench is intentionally small at the root and detailed in the harness
4
+ folders.
5
+
6
+ ## Keep AGENTS.md Small
7
+
8
+ Use `AGENTS.md` as a router. Put detailed rules in workflows, standards,
9
+ checklists, and scripts.
10
+
11
+ ## Add A Layer Deliberately
12
+
13
+ If your repo needs product, infrastructure, docs, or education governance, add
14
+ a layer under `.agentic/` and update `AGENTS.md` only with the routing summary.
15
+
16
+ ## Prefer Scripts For Repeatable Checks
17
+
18
+ If a process can be checked deterministically, add or update a governed script
19
+ instead of relying only on prose.
20
+
21
+ ## Keep Session History Local To The Repo
22
+
23
+ Do not import another repo's `commitLogs/`. The first chat in your repo creates
24
+ your repo's own session history inside the chat-owned worktree.
25
+
26
+ ## Promote Reusable Lessons Upstream
27
+
28
+ When a target repo teaches you something reusable about the workbench, promote
29
+ that lesson back to `llm-workbench` instead of letting each repo drift.
@@ -0,0 +1,38 @@
1
+ # Concepts
2
+
3
+ ## Chat Session
4
+
5
+ A chat session is one unit of agent-assisted work. The session log records the
6
+ task, branch, workflow, commits, and estimated transcript metrics.
7
+
8
+ Session logs live under:
9
+
10
+ ```txt
11
+ commitLogs/<year>/<month>/<day>/<session>/README.md
12
+ ```
13
+
14
+ ## Chat-Owned Worktree
15
+
16
+ Implementation work happens in a chat-owned Git worktree. The root repo stays
17
+ available as the local integration console.
18
+
19
+ This lets a chat branch do real work without blocking other chats or mixing
20
+ unrelated changes.
21
+
22
+ ## Governed Script
23
+
24
+ A governed script is a helper command that has a known path, metadata, and
25
+ approval boundary. The harness prefers governed scripts over ad hoc shell
26
+ commands when behavior should be repeatable.
27
+
28
+ ## Local Main Refresh
29
+
30
+ Chat branches should be refreshed from local `main` before promotion. The
31
+ harness separates rehearsal from apply so conflicts can be inspected before
32
+ the branch is changed.
33
+
34
+ ## Commit Log
35
+
36
+ The commit log is the work ledger for a chat. It is not a changelog for the
37
+ whole project. It records what happened in one session and preserves the
38
+ evidence needed for closeout, reporting, and future recovery.
@@ -0,0 +1,114 @@
1
+ # Install
2
+
3
+ ## Requirements
4
+
5
+ - Git
6
+ - Bash
7
+ - Node.js and npm for the `llm-wb` CLI
8
+
9
+ ## Install Into A Target Repo
10
+
11
+ The intended public install path starts from the target Git repo:
12
+
13
+ ```bash
14
+ cd /path/to/target/repo
15
+
16
+ npx llm-wb init --dry-run
17
+ npx llm-wb init
18
+ ```
19
+
20
+ Dry-run mode prints the package and file plan without writing. Apply mode
21
+ refuses to write when the plan contains conflicts.
22
+
23
+ The installer copies the workbench harness into the target Git repo. It does not
24
+ copy `commitLogs/` from the workbench repo, overwrite existing assistant
25
+ instruction files, or replace unrelated `package.json` scripts. Existing
26
+ instruction files receive a managed `llm-workbench` block; package files are
27
+ merged instead of overwritten.
28
+
29
+ For an empty Git repo with no first commit yet:
30
+
31
+ ```bash
32
+ npx llm-wb init --init-commit
33
+ ```
34
+
35
+ That creates an install commit after the clean plan is applied.
36
+ `--init-commit` is only for repos with no existing `HEAD`; existing repos should
37
+ review and commit the install changes through their normal process. The install
38
+ commit stages only workbench-owned files, managed instruction blocks,
39
+ `package.json` when workbench scripts were added, and the install manifest.
40
+
41
+ Target installs do not copy the upstream `.agentic/01.harness` maintenance
42
+ tree. Reusable harness lessons should be promoted back to `llm-workbench`
43
+ instead of creating source-specific harness governance in each target repo.
44
+
45
+ ## Verify The Install
46
+
47
+ From the target repo:
48
+
49
+ ```bash
50
+ npx llm-wb list
51
+ npx llm-wb sessions list
52
+ ```
53
+
54
+ `llm-wb list` lists available installed workbench commands. `llm-wb sessions
55
+ list` lists active chat sessions and branches. Both commands should run without
56
+ requiring a current chat session.
57
+
58
+ The public-beta contract is summarized in `docs/public-beta-contract.md`.
59
+
60
+ ## First Chat
61
+
62
+ Open the target repo with your coding agent. The first chat startup should
63
+ create that repo's own `commitLogs/` tree inside the chat-owned worktree and
64
+ use the target repo as the source of truth.
65
+
66
+ For tools that prefer machine-readable startup packets:
67
+
68
+ ```bash
69
+ npx llm-wb new --json "Describe the prompt"
70
+ ```
71
+
72
+ The JSON packet includes the session log, chat-owned worktree, lifecycle
73
+ workflow, latest context-packet references, and first prompt.
74
+
75
+ ## Transcript Metadata
76
+
77
+ The workbench stores neutral transcript metadata:
78
+
79
+ - `transcript_provider`
80
+ - `transcript_path`
81
+ - `transcript_bytes`
82
+ - `transcript_source`
83
+
84
+ Codex transcript discovery can populate these fields automatically. Other
85
+ providers can supply them when recording a commit:
86
+
87
+ ```bash
88
+ CHAT_TRANSCRIPT_PROVIDER=mistral \
89
+ CHAT_TRANSCRIPT_BYTES=4096 \
90
+ CHAT_TRANSCRIPT_SOURCE="Mistral CLI transcript bytes" \
91
+ bash scripts/00.chat/session-log/record-chat-commit/script.sh \
92
+ <commit-sha> \
93
+ "Commit subject" \
94
+ "Commit summary"
95
+ ```
96
+
97
+ Missing transcript metrics do not block portable mode. Set
98
+ `CHAT_TRANSCRIPT_METRICS_MODE=strict` when a repo wants commit recording to fail
99
+ without transcript metrics.
100
+
101
+ ## Uninstall
102
+
103
+ From the target repo:
104
+
105
+ ```bash
106
+ bash scripts/uninstall.sh --dry-run .
107
+ bash scripts/uninstall.sh --apply .
108
+ ```
109
+
110
+ Uninstall reads `.llm-workbench/install-manifest.tsv` from the target repo. It
111
+ removes only workbench-owned files, package scripts, and managed instruction
112
+ blocks recorded in that manifest. It should not remove target repo product code,
113
+ unrelated package scripts, or committed session history unless you explicitly
114
+ clean those files yourself.
@@ -0,0 +1,45 @@
1
+ # Public-Beta Contract
2
+
3
+ `llm-workbench` is a standalone, provider-neutral Git/Bash/npm chat harness for
4
+ blank or existing repos, with safe install/uninstall, assistant adapters, JSON
5
+ startup packets, and portable transcript metadata across common CLI and
6
+ code-assistant workflows.
7
+
8
+ It does not claim to work perfectly with every LLM assistant or every editor
9
+ setup. Repos can provide instruction files, command surfaces, and structured
10
+ handoffs, but each assistant decides how well it follows those instructions.
11
+
12
+ ## Invariants
13
+
14
+ - No durable whole-chat `layer`, `mode`, or `workflow` classification.
15
+ - Prompt-level routing is local and optional.
16
+ - Base startup does not require RAG/rulebook, classifier scripts, or
17
+ source-specific routers.
18
+ - Public export and target installs are self-contained.
19
+ - Transcript metadata is provider-neutral.
20
+ - Codex transcript discovery is an optional adapter, not a default assumption.
21
+ - Cost metrics are unavailable by default until a pricing profile is selected.
22
+ - Install and uninstall are manifest-backed and preserve user files.
23
+ - Assistant adapters are thin routers to the canonical chat lifecycle workflow.
24
+ - The public `llm-wb` CLI is a thin wrapper around the existing
25
+ installer, dispatcher, session-log, and local-merge scripts.
26
+ - `llm-wb list` lists installed workbench commands. Active chat sessions are
27
+ listed with `llm-wb sessions list`.
28
+ - `llm-wb new --json` supports code-assistant startup handoff.
29
+
30
+ ## Required Checks
31
+
32
+ Before changing public harness behavior, run the portability suite:
33
+
34
+ ```bash
35
+ bash scripts/00.chat/upstream/validate-llm-workbench-portability/script.sh
36
+ ```
37
+
38
+ Public changes should also run the relevant focused smoke tests listed in the
39
+ source repo standard.
40
+
41
+ CLI-facing changes should run:
42
+
43
+ ```bash
44
+ bash tests/smoke-test-cli.sh
45
+ ```
@@ -0,0 +1,103 @@
1
+ # Workflows
2
+
3
+ ## Start A Chat
4
+
5
+ Chat startup is governed by:
6
+
7
+ ```txt
8
+ .agentic/00.chat/workflows/chat-start.md
9
+ ```
10
+
11
+ At startup the harness finds or creates session metadata, records the chat
12
+ lifecycle workflow, and verifies the chat-owned worktree when writes are
13
+ allowed. It does not assign the whole chat a durable layer, mode, or workflow.
14
+
15
+ For assistants that can consume structured startup output:
16
+
17
+ ```bash
18
+ llm-wb new --json "Describe the prompt"
19
+ ```
20
+
21
+ The JSON packet includes the session log, chat-owned worktree, lifecycle
22
+ workflow, latest context-packet references, and first prompt.
23
+
24
+ Use `npx llm-wb ...` instead of `llm-wb ...` when the CLI is not installed
25
+ globally or linked into your shell.
26
+
27
+ ## Commit Work
28
+
29
+ Commit preparation is governed by:
30
+
31
+ ```txt
32
+ .agentic/00.chat/workflows/chat-commit.md
33
+ ```
34
+
35
+ The before-commit gates check prerequisites, session log safety, deterministic
36
+ process drift, metadata headers, and governed command drift.
37
+
38
+ The public CLI shortcut is:
39
+
40
+ ```bash
41
+ llm-wb commit -m "Describe the completed work"
42
+ ```
43
+
44
+ This wraps the existing commit gates, creates the task commit, records it in the
45
+ session log, and checkpoints session evidence.
46
+
47
+ Transcript metrics are provider-neutral. Codex can use the bundled transcript
48
+ adapter; other assistants can provide values with `CHAT_TRANSCRIPT_PROVIDER`,
49
+ `CHAT_TRANSCRIPT_PATH`, `CHAT_TRANSCRIPT_BYTES`, and `CHAT_TRANSCRIPT_SOURCE`.
50
+ Portable mode records unavailable metrics without blocking. Strict mode is
51
+ available through `CHAT_TRANSCRIPT_METRICS_MODE=strict`.
52
+
53
+ Cost metrics are provider-neutral by default. Bundled pricing records cost as
54
+ unavailable until `CHAT_COST_PROFILE` or `CHAT_COST_PRICING_FILE` selects a
55
+ concrete pricing profile.
56
+
57
+ ## Refresh From Main
58
+
59
+ Main refresh is governed by:
60
+
61
+ ```txt
62
+ .agentic/00.chat/workflows/chat-refresh-from-main.md
63
+ ```
64
+
65
+ The workflow separates read-only status, rehearsal, and apply.
66
+
67
+ For active chat/session visibility today:
68
+
69
+ ```bash
70
+ llm-wb sessions list
71
+ ```
72
+
73
+ ## Promote To Main
74
+
75
+ Promotion is governed by:
76
+
77
+ ```txt
78
+ .agentic/00.chat/workflows/chat-promote-to-main.md
79
+ ```
80
+
81
+ The harness treats local merge readiness separately from remote push. A push
82
+ always needs separate explicit approval.
83
+
84
+ The current CLI shortcut verifies readiness and performs only the local merge:
85
+
86
+ ```bash
87
+ llm-wb merge-main
88
+ ```
89
+
90
+ ## Report Or Close A Chat
91
+
92
+ Reporting and closeout are governed by:
93
+
94
+ ```txt
95
+ .agentic/00.chat/workflows/chat-reporting.md
96
+ .agentic/00.chat/workflows/chat-cleanup.md
97
+ ```
98
+
99
+ These workflows help summarize work, inspect active workspaces, and clean up
100
+ empty chat branches when it is safe.
101
+
102
+ `llm-wb list` intentionally lists installed workbench commands. Use
103
+ `llm-wb sessions list` to list active chat sessions.
@@ -0,0 +1,13 @@
1
+ # Minimal Target Repo
2
+
3
+ This example represents the smallest kind of repo that can install the
4
+ workbench:
5
+
6
+ - it is a Git repo
7
+ - it has no existing harness
8
+ - it can receive `AGENTS.md`, `.agentic/`, `scripts/`, and `package.json`
9
+ - its first chat startup creates its own `commitLogs/` inside a chat-owned
10
+ worktree
11
+
12
+ The install smoke test creates a throwaway repo with this shape rather than
13
+ modifying this example directory in place.
package/package.json ADDED
@@ -0,0 +1,93 @@
1
+ {
2
+ "name": "llm-wb",
3
+ "version": "0.1.0-beta.0",
4
+ "description": "A portable chat harness for governed agentic development workflows.",
5
+ "license": "MIT",
6
+ "author": "Gordon Rose",
7
+ "homepage": "https://github.com/gordonrose/llm-workbench#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/gordonrose/llm-workbench.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/gordonrose/llm-workbench/issues"
14
+ },
15
+ "keywords": [
16
+ "agentic",
17
+ "chat",
18
+ "cli",
19
+ "git",
20
+ "llm",
21
+ "workbench"
22
+ ],
23
+ "engines": {
24
+ "node": ">=18"
25
+ },
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "bin": {
30
+ "llm-wb": "bin/llm-workbench.js"
31
+ },
32
+ "files": [
33
+ ".agentic/00.chat/",
34
+ ".agentic/shared/",
35
+ ".cursor/rules/llm-workbench.mdc",
36
+ ".github/copilot-instructions.md",
37
+ "AGENTS.md",
38
+ "CLAUDE.md",
39
+ "CONTRIBUTING.md",
40
+ "LICENSE",
41
+ "LLM_WORKBENCH.md",
42
+ "README.md",
43
+ "SECURITY.md",
44
+ "bin/",
45
+ "docs/00.chat/README.md",
46
+ "docs/00.chat/llm-workbench-acceptance-matrix.md",
47
+ "docs/00.chat/script-layout.md",
48
+ "docs/adapting-to-your-repo.md",
49
+ "docs/concepts.md",
50
+ "docs/install.md",
51
+ "docs/public-beta-contract.md",
52
+ "docs/workflows.md",
53
+ "examples/",
54
+ "scripts/00.chat/README.md",
55
+ "scripts/00.chat/bootstrap/",
56
+ "scripts/00.chat/closeout/",
57
+ "scripts/00.chat/command/",
58
+ "scripts/00.chat/git/",
59
+ "scripts/00.chat/local-merge/",
60
+ "scripts/00.chat/main-refresh/",
61
+ "scripts/00.chat/metrics/",
62
+ "scripts/00.chat/migration/",
63
+ "scripts/00.chat/recovery/",
64
+ "scripts/00.chat/reporting/",
65
+ "scripts/00.chat/session-log/",
66
+ "scripts/00.chat/startup/",
67
+ "scripts/00.chat/transcript/",
68
+ "scripts/00.chat/worktree/",
69
+ "scripts/01.harness/artifact-metadata/check-headers/script.sh",
70
+ "scripts/01.harness/artifact-metadata/check-headers/smoke-test.sh",
71
+ "scripts/01.harness/check-deterministic-process-drift.sh",
72
+ "scripts/01.harness/check-governed-script-command-drift.sh",
73
+ "scripts/01.harness/run-governed-script.sh",
74
+ "scripts/install.sh",
75
+ "scripts/uninstall.sh",
76
+ "tests/smoke-test-install.sh"
77
+ ],
78
+ "scripts": {
79
+ "chat": "bash scripts/00.chat/command/dispatcher/script.sh",
80
+ "chat:list": "bash scripts/00.chat/command/dispatcher/script.sh list",
81
+ "chat:new": "bash scripts/00.chat/command/dispatcher/script.sh new",
82
+ "chat:open-window": "bash scripts/00.chat/command/dispatcher/script.sh open-window",
83
+ "chat:close": "bash scripts/00.chat/command/dispatcher/script.sh close",
84
+ "chat:audit-bootstrap": "bash scripts/00.chat/bootstrap/audit-chat-bootstrap-file-set/script.sh",
85
+ "chat:audit-layer-migration": "bash scripts/00.chat/migration/audit-chat-layer-migration/script.sh",
86
+ "chat:cleanup-empty-branches": "bash scripts/00.chat/git/cleanup-empty-chat-branches/script.sh",
87
+ "chat:commit-log-summary": "bash scripts/00.chat/reporting/generate-commit-log-summary/script.sh",
88
+ "chat:record-main-refresh-conflict": "bash scripts/00.chat/session-log/record-main-refresh-conflict/script.sh",
89
+ "chat:report-workspaces": "bash scripts/00.chat/reporting/report-chat-workspaces/script.sh",
90
+ "chat:smoke-package-scripts": "bash scripts/00.chat/command/package-scripts/smoke-test.sh",
91
+ "test:install": "bash tests/smoke-test-install.sh"
92
+ }
93
+ }
@@ -0,0 +1,46 @@
1
+ <!-- agentic-artifact:
2
+ schema: agentic-artifact/v2
3
+ id: chat.script.readme
4
+ version: 1
5
+ status: active
6
+ layer: 00.chat
7
+ domain: governance
8
+ disciplines:
9
+ - agentic
10
+ kind: script-domain-readme
11
+ purpose: Explain the canonical script layout for the chat lifecycle layer.
12
+ portability:
13
+ class: required
14
+ targets:
15
+ - llm-workbench
16
+ used_by:
17
+ - id: chat.readme
18
+ path: .agentic/00.chat/README.md
19
+ - id: harness.architecture.adr.0017-organize-scripts-by-owner-domain-and-capability
20
+ -->
21
+ # 00.chat Scripts
22
+
23
+ This tree contains the canonical executable surface for the chat lifecycle
24
+ layer. It is the script side of `.agentic/00.chat/`: workflows describe the
25
+ governed process, and scripts provide deterministic checks, commands, reports,
26
+ startup, recovery, and bookkeeping.
27
+
28
+ Each capability lives in a folder:
29
+
30
+ ```txt
31
+ scripts/00.chat/<domain>/<capability>/
32
+ ```
33
+
34
+ The common shape is:
35
+
36
+ - `script.sh` or `script.js`: the canonical implementation
37
+ - `smoke-test.sh`: focused behavior proof, when the capability needs one
38
+ - `README.md`: human onboarding for what the capability owns
39
+
40
+ Public users should usually enter through `package.json` `chat:*` scripts.
41
+ Workflow and gate authors should point to the canonical paths in this tree.
42
+
43
+ Retired compatibility paths under `scripts/shared/chat/` and
44
+ `scripts/shared/git/` should not be reintroduced. Historical documentation may
45
+ mention them as previous locations, but live instructions should point here.
46
+
@@ -0,0 +1,35 @@
1
+ <!-- agentic-artifact:
2
+ schema: agentic-artifact/v2
3
+ id: chat.script.bootstrap.readme
4
+ version: 1
5
+ status: active
6
+ layer: 00.chat
7
+ domain: bootstrap
8
+ disciplines:
9
+ - agentic
10
+ kind: script-domain-readme
11
+ purpose: Explain bootstrap scripts for preparing a portable chat workbench repo.
12
+ portability:
13
+ class: required
14
+ targets:
15
+ - llm-workbench
16
+ used_by:
17
+ - id: chat.workflows.bootstrap-chat-workbench-repo
18
+ path: .agentic/00.chat/workflows/bootstrap-chat-workbench-repo.md
19
+ - id: chat.script.bootstrap.audit-chat-bootstrap-file-set.readme
20
+ path: scripts/00.chat/bootstrap/audit-chat-bootstrap-file-set/README.md
21
+ -->
22
+ # Bootstrap Scripts
23
+
24
+ Bootstrap scripts help separate the portable chat workbench from this source
25
+ repo. They answer a practical question: which files are required when creating
26
+ or refreshing a standalone `llm-workbench` style repository?
27
+
28
+ Bootstrap is not normal chat startup. It is source-to-upstream packaging work.
29
+ It must avoid source-specific product files, session logs, transcripts, local
30
+ paths, and deployment material.
31
+
32
+ Use this domain when preparing the public workbench file set, validating that no
33
+ required script is missing, or checking whether a script is merely a validation
34
+ candidate.
35
+