@cleocode/core 2026.4.11 → 2026.4.12

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 (169) hide show
  1. package/dist/codebase-map/analyzers/architecture.d.ts.map +1 -1
  2. package/dist/codebase-map/analyzers/architecture.js +0 -1
  3. package/dist/codebase-map/analyzers/architecture.js.map +1 -1
  4. package/dist/conduit/local-transport.d.ts +18 -8
  5. package/dist/conduit/local-transport.d.ts.map +1 -1
  6. package/dist/conduit/local-transport.js +23 -13
  7. package/dist/conduit/local-transport.js.map +1 -1
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +0 -1
  10. package/dist/config.js.map +1 -1
  11. package/dist/errors.d.ts +19 -0
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js +6 -0
  14. package/dist/errors.js.map +1 -1
  15. package/dist/index.js +175 -68950
  16. package/dist/index.js.map +1 -7
  17. package/dist/init.d.ts +1 -2
  18. package/dist/init.d.ts.map +1 -1
  19. package/dist/init.js +1 -2
  20. package/dist/init.js.map +1 -1
  21. package/dist/internal.d.ts +8 -3
  22. package/dist/internal.d.ts.map +1 -1
  23. package/dist/internal.js +13 -6
  24. package/dist/internal.js.map +1 -1
  25. package/dist/memory/learnings.d.ts +2 -2
  26. package/dist/memory/patterns.d.ts +6 -6
  27. package/dist/output.d.ts +32 -11
  28. package/dist/output.d.ts.map +1 -1
  29. package/dist/output.js +67 -67
  30. package/dist/output.js.map +1 -1
  31. package/dist/paths.js +80 -14
  32. package/dist/paths.js.map +1 -1
  33. package/dist/skills/dynamic-skill-generator.d.ts +0 -2
  34. package/dist/skills/dynamic-skill-generator.d.ts.map +1 -1
  35. package/dist/skills/dynamic-skill-generator.js.map +1 -1
  36. package/dist/store/agent-registry-accessor.d.ts +203 -12
  37. package/dist/store/agent-registry-accessor.d.ts.map +1 -1
  38. package/dist/store/agent-registry-accessor.js +618 -100
  39. package/dist/store/agent-registry-accessor.js.map +1 -1
  40. package/dist/store/api-key-kdf.d.ts +73 -0
  41. package/dist/store/api-key-kdf.d.ts.map +1 -0
  42. package/dist/store/api-key-kdf.js +84 -0
  43. package/dist/store/api-key-kdf.js.map +1 -0
  44. package/dist/store/cleanup-legacy.js +171 -0
  45. package/dist/store/cleanup-legacy.js.map +1 -0
  46. package/dist/store/conduit-sqlite.d.ts +184 -0
  47. package/dist/store/conduit-sqlite.d.ts.map +1 -0
  48. package/dist/store/conduit-sqlite.js +570 -0
  49. package/dist/store/conduit-sqlite.js.map +1 -0
  50. package/dist/store/global-salt.d.ts +78 -0
  51. package/dist/store/global-salt.d.ts.map +1 -0
  52. package/dist/store/global-salt.js +147 -0
  53. package/dist/store/global-salt.js.map +1 -0
  54. package/dist/store/migrate-signaldock-to-conduit.d.ts +81 -0
  55. package/dist/store/migrate-signaldock-to-conduit.d.ts.map +1 -0
  56. package/dist/store/migrate-signaldock-to-conduit.js +555 -0
  57. package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
  58. package/dist/store/nexus-sqlite.js +28 -3
  59. package/dist/store/nexus-sqlite.js.map +1 -1
  60. package/dist/store/signaldock-sqlite.d.ts +122 -19
  61. package/dist/store/signaldock-sqlite.d.ts.map +1 -1
  62. package/dist/store/signaldock-sqlite.js +401 -251
  63. package/dist/store/signaldock-sqlite.js.map +1 -1
  64. package/dist/store/sqlite-backup.js +122 -4
  65. package/dist/store/sqlite-backup.js.map +1 -1
  66. package/dist/system/backup.d.ts +0 -26
  67. package/dist/system/backup.d.ts.map +1 -1
  68. package/dist/system/runtime.d.ts +0 -2
  69. package/dist/system/runtime.d.ts.map +1 -1
  70. package/dist/system/runtime.js +3 -3
  71. package/dist/system/runtime.js.map +1 -1
  72. package/dist/tasks/add.d.ts +1 -1
  73. package/dist/tasks/add.d.ts.map +1 -1
  74. package/dist/tasks/add.js +98 -23
  75. package/dist/tasks/add.js.map +1 -1
  76. package/dist/tasks/complete.d.ts.map +1 -1
  77. package/dist/tasks/complete.js +4 -1
  78. package/dist/tasks/complete.js.map +1 -1
  79. package/dist/tasks/find.d.ts.map +1 -1
  80. package/dist/tasks/find.js +4 -1
  81. package/dist/tasks/find.js.map +1 -1
  82. package/dist/tasks/labels.d.ts.map +1 -1
  83. package/dist/tasks/labels.js +4 -1
  84. package/dist/tasks/labels.js.map +1 -1
  85. package/dist/tasks/relates.d.ts.map +1 -1
  86. package/dist/tasks/relates.js +16 -4
  87. package/dist/tasks/relates.js.map +1 -1
  88. package/dist/tasks/show.d.ts.map +1 -1
  89. package/dist/tasks/show.js +4 -1
  90. package/dist/tasks/show.js.map +1 -1
  91. package/dist/tasks/update.d.ts.map +1 -1
  92. package/dist/tasks/update.js +32 -6
  93. package/dist/tasks/update.js.map +1 -1
  94. package/dist/validation/engine.d.ts.map +1 -1
  95. package/dist/validation/engine.js +16 -4
  96. package/dist/validation/engine.js.map +1 -1
  97. package/dist/validation/param-utils.d.ts +5 -3
  98. package/dist/validation/param-utils.d.ts.map +1 -1
  99. package/dist/validation/param-utils.js +8 -6
  100. package/dist/validation/param-utils.js.map +1 -1
  101. package/dist/validation/protocols/_shared.d.ts.map +1 -1
  102. package/dist/validation/protocols/_shared.js +13 -6
  103. package/dist/validation/protocols/_shared.js.map +1 -1
  104. package/package.json +7 -7
  105. package/src/adapters/__tests__/manager.test.ts +0 -1
  106. package/src/codebase-map/analyzers/architecture.ts +0 -1
  107. package/src/conduit/__tests__/local-credential-flow.test.ts +20 -18
  108. package/src/conduit/__tests__/local-transport.test.ts +14 -12
  109. package/src/conduit/local-transport.ts +23 -13
  110. package/src/config.ts +0 -1
  111. package/src/errors.ts +24 -0
  112. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.ts +2 -5
  113. package/src/init.ts +1 -2
  114. package/src/internal.ts +49 -2
  115. package/src/lifecycle/cant/lifecycle-rcasd.cant +133 -0
  116. package/src/memory/__tests__/engine-compat.test.ts +2 -2
  117. package/src/memory/__tests__/pipeline-manifest-sqlite.test.ts +4 -4
  118. package/src/observability/__tests__/index.test.ts +4 -4
  119. package/src/observability/__tests__/log-filter.test.ts +4 -4
  120. package/src/output.ts +73 -75
  121. package/src/sessions/__tests__/session-grade.integration.test.ts +1 -1
  122. package/src/sessions/__tests__/session-grade.test.ts +2 -2
  123. package/src/skills/__tests__/dynamic-skill-generator.test.ts +0 -2
  124. package/src/skills/dynamic-skill-generator.ts +0 -2
  125. package/src/store/__tests__/agent-registry-accessor.test.ts +807 -0
  126. package/src/store/__tests__/api-key-kdf.test.ts +113 -0
  127. package/src/store/__tests__/conduit-sqlite.test.ts +413 -0
  128. package/src/store/__tests__/global-salt.test.ts +195 -0
  129. package/src/store/__tests__/migrate-signaldock-to-conduit.test.ts +715 -0
  130. package/src/store/__tests__/signaldock-sqlite.test.ts +652 -0
  131. package/src/store/__tests__/sqlite-backup-global.test.ts +307 -3
  132. package/src/store/__tests__/sqlite-backup.test.ts +5 -1
  133. package/src/store/__tests__/t310-integration.test.ts +1150 -0
  134. package/src/store/agent-registry-accessor.ts +847 -140
  135. package/src/store/api-key-kdf.ts +104 -0
  136. package/src/store/conduit-sqlite.ts +655 -0
  137. package/src/store/global-salt.ts +175 -0
  138. package/src/store/migrate-signaldock-to-conduit.ts +669 -0
  139. package/src/store/signaldock-sqlite.ts +431 -254
  140. package/src/store/sqlite-backup.ts +185 -10
  141. package/src/system/backup.ts +2 -62
  142. package/src/system/runtime.ts +4 -6
  143. package/src/tasks/__tests__/error-hints.test.ts +256 -0
  144. package/src/tasks/add.ts +99 -9
  145. package/src/tasks/complete.ts +4 -1
  146. package/src/tasks/find.ts +4 -1
  147. package/src/tasks/labels.ts +4 -1
  148. package/src/tasks/relates.ts +16 -4
  149. package/src/tasks/show.ts +4 -1
  150. package/src/tasks/update.ts +32 -3
  151. package/src/validation/__tests__/error-hints.test.ts +97 -0
  152. package/src/validation/engine.ts +16 -1
  153. package/src/validation/param-utils.ts +10 -7
  154. package/src/validation/protocols/_shared.ts +14 -6
  155. package/src/validation/protocols/cant/architecture-decision.cant +80 -0
  156. package/src/validation/protocols/cant/artifact-publish.cant +95 -0
  157. package/src/validation/protocols/cant/consensus.cant +74 -0
  158. package/src/validation/protocols/cant/contribution.cant +82 -0
  159. package/src/validation/protocols/cant/decomposition.cant +92 -0
  160. package/src/validation/protocols/cant/implementation.cant +67 -0
  161. package/src/validation/protocols/cant/provenance.cant +88 -0
  162. package/src/validation/protocols/cant/release.cant +96 -0
  163. package/src/validation/protocols/cant/research.cant +66 -0
  164. package/src/validation/protocols/cant/specification.cant +67 -0
  165. package/src/validation/protocols/cant/testing.cant +88 -0
  166. package/src/validation/protocols/cant/validation.cant +65 -0
  167. package/src/validation/protocols/protocols-markdown/decomposition.md +0 -4
  168. package/templates/config.template.json +0 -1
  169. package/templates/global-config.template.json +0 -1
package/dist/output.js CHANGED
@@ -4,13 +4,19 @@
4
4
  * LAFS (LLM-Agent-First Schema) ensures all CLI output is
5
5
  * machine-parseable JSON by default, with optional human-readable modes.
6
6
  *
7
- * All envelopes are now full LAFS-compliant with $schema and _meta.
8
- * The backward-compatible shape (success + data, no _meta) has been removed.
7
+ * All envelopes use the canonical CLI envelope shape:
8
+ * { success, data?, error?, meta, page? }
9
+ *
10
+ * This replaces the three legacy shapes:
11
+ * {ok, r, _m} (minimal MVI — removed)
12
+ * {$schema, _meta, success, result} (full LAFS — now uses meta/data)
13
+ * {success, result} (observe command — now uses data)
9
14
  *
10
15
  * Types are re-exported from the canonical source in src/types/lafs.ts.
11
16
  *
12
17
  * @epic T4663
13
18
  * @task T4672
19
+ * @task T338 (ADR-039 envelope unification)
14
20
  */
15
21
  import { randomUUID } from 'node:crypto';
16
22
  import { CleoError } from './errors.js';
@@ -47,110 +53,104 @@ function drainWarnings() {
47
53
  return drained;
48
54
  }
49
55
  /**
50
- * Create a LAFS-conformant _meta object for CLI envelopes.
56
+ * Create a canonical `CliMeta` object for CLI envelopes.
57
+ *
51
58
  * Includes sessionId (T4702) and warnings (T4669) when present.
59
+ * Drains the pending warnings queue so they are included in the current envelope.
60
+ *
61
+ * @param operation - Dot-delimited operation identifier (e.g. `"tasks.show"`).
62
+ * @param duration_ms - Wall-clock duration in milliseconds. Defaults to 0.
63
+ * @returns A fully populated {@link CliMeta} object.
52
64
  *
53
65
  * @task T4700
54
66
  * @task T4702
67
+ * @task T338
55
68
  * @epic T4663
56
69
  */
57
- function createCliMeta(operation, mvi = 'minimal') {
70
+ function createCliMeta(operation, duration_ms = 0) {
58
71
  const warnings = drainWarnings();
59
72
  const meta = {
60
- specVersion: '1.2.3',
61
- schemaVersion: '2026.2.1',
62
- timestamp: new Date().toISOString(),
63
73
  operation,
64
74
  requestId: randomUUID(),
65
- transport: 'cli',
66
- strict: true,
67
- mvi,
68
- contextVersion: 1,
69
- ...(warnings && { warnings }),
75
+ duration_ms,
76
+ timestamp: new Date().toISOString(),
70
77
  };
71
78
  const sessionId = getCurrentSessionId();
72
79
  if (sessionId) {
73
- meta.sessionId = sessionId;
80
+ meta['sessionId'] = sessionId;
81
+ }
82
+ if (warnings && warnings.length > 0) {
83
+ meta['warnings'] = warnings;
74
84
  }
75
85
  return meta;
76
86
  }
77
87
  /**
78
- * Format a successful result as a full LAFS-conformant envelope.
88
+ * Format a successful result as a canonical CLI envelope.
89
+ *
90
+ * Produces the unified `CliEnvelope<T>` shape: `{success, data, meta, page?}`.
91
+ * This replaces all three legacy shapes (minimal `{ok,r,_m}`, full `{$schema,_meta,result}`,
92
+ * and observe `{success,result}`) with a single canonical format (ADR-039).
79
93
  *
80
- * Always produces the full LAFSEnvelope with $schema and _meta.
81
- * When operation is omitted, defaults to 'cli.output'.
82
- * Supports optional page (T4668) and _extensions (T4670).
94
+ * The `mvi` option in `FormatOptions` is accepted for backward compatibility but
95
+ * no longer affects the envelope shape — the canonical shape is always emitted.
96
+ *
97
+ * @param data - The operation result payload.
98
+ * @param message - Optional success message (attached to `meta.message`).
99
+ * @param operationOrOpts - Operation name string or `FormatOptions` object.
100
+ * @returns JSON-serialized `CliEnvelope<T>`.
83
101
  *
84
102
  * @task T4672
85
103
  * @task T4668
86
104
  * @task T4670
105
+ * @task T338
87
106
  * @epic T4663
88
107
  */
89
108
  export function formatSuccess(data, message, operationOrOpts) {
90
109
  const opts = typeof operationOrOpts === 'string' ? { operation: operationOrOpts } : (operationOrOpts ?? {});
91
- // Determine MVI level: default is 'minimal' (agent-optimized).
92
- // Only --human flag or explicit mvi='full'/'standard' overrides.
93
- const mviLevel = opts.mvi ?? 'minimal';
94
- const meta = createCliMeta(opts.operation ?? 'cli.output', mviLevel);
95
- const fullEnvelope = {
96
- $schema: 'https://lafs.dev/schemas/v1/envelope.schema.json',
97
- _meta: meta,
110
+ const meta = createCliMeta(opts.operation ?? 'cli.output');
111
+ const envelope = {
98
112
  success: true,
99
- result: data,
100
- ...(message && { message }),
113
+ data,
114
+ meta: message ? { ...meta, message } : meta,
101
115
  ...(opts.page && { page: opts.page }),
102
- ...(opts.extensions &&
103
- Object.keys(opts.extensions).length > 0 && { _extensions: opts.extensions }),
104
116
  };
105
- // For 'full' level, skip projection — return the complete envelope as-is.
106
- // This is the backward-compatible path used by --human and conformance tests.
107
- if (mviLevel === 'full') {
108
- return JSON.stringify(fullEnvelope);
109
- }
110
- // Apply MVI projection — strips envelope to the declared level.
111
- // 'minimal': { success, result, _meta: { requestId, contextVersion } }
112
- // 'standard': + $schema, timestamp, operation, mvi
113
- if (mviLevel === 'minimal') {
114
- // Inline minimal projection — avoids dynamic import overhead.
115
- // Matches projectMetaMinimal() from @cleocode/lafs/mviProjection.ts
116
- const minimalMeta = {
117
- op: meta.operation,
118
- rid: meta.requestId,
119
- };
120
- if (meta.sessionId)
121
- minimalMeta.sid = meta.sessionId;
122
- if (meta.warnings?.length)
123
- minimalMeta.w = meta.warnings;
124
- const minimal = {
125
- ok: true,
126
- r: data,
127
- _m: minimalMeta,
128
- };
129
- if (message)
130
- minimal.msg = message;
131
- if (opts.page)
132
- minimal.p = opts.page;
133
- return JSON.stringify(minimal);
134
- }
135
- // 'standard' level — use the full envelope structure (current behavior)
136
- return JSON.stringify(fullEnvelope);
117
+ return JSON.stringify(envelope);
137
118
  }
138
119
  /**
139
- * Format an error as a full LAFS-conformant envelope.
120
+ * Format an error as a canonical CLI error envelope.
121
+ *
122
+ * Produces `{success: false, error: CliEnvelopeError, meta: CliMeta}`.
123
+ * Every error envelope now always includes `meta` (ADR-039).
124
+ * When operation is omitted, defaults to `'cli.output'`.
140
125
  *
141
- * Always produces the full LAFSEnvelope with $schema and _meta.
142
- * When operation is omitted, defaults to 'cli.output'.
126
+ * @param error - The `CleoError` to format.
127
+ * @param operation - Optional dot-delimited operation identifier.
128
+ * @returns JSON-serialized error `CliEnvelope`.
143
129
  *
144
130
  * @task T4672
131
+ * @task T338
145
132
  * @epic T4663
146
133
  */
147
134
  export function formatError(error, operation) {
135
+ const lafsError = error.toLAFSError();
136
+ const errorObj = {
137
+ code: lafsError.code,
138
+ message: lafsError.message,
139
+ details: lafsError.details,
140
+ };
141
+ if ('category' in lafsError && lafsError.category) {
142
+ errorObj['category'] = lafsError.category;
143
+ }
144
+ if ('retryable' in lafsError) {
145
+ errorObj['retryable'] = lafsError.retryable;
146
+ }
147
+ if ('agentAction' in lafsError && lafsError.agentAction) {
148
+ errorObj['agentAction'] = lafsError.agentAction;
149
+ }
148
150
  const envelope = {
149
- $schema: 'https://lafs.dev/schemas/v1/envelope.schema.json',
150
- _meta: createCliMeta(operation ?? 'cli.output'),
151
151
  success: false,
152
- result: null,
153
- error: error.toLAFSError(),
152
+ error: errorObj,
153
+ meta: createCliMeta(operation ?? 'cli.output'),
154
154
  };
155
155
  return JSON.stringify(envelope);
156
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
package/dist/paths.js CHANGED
@@ -1,8 +1,14 @@
1
1
  /**
2
2
  * XDG-compliant path resolution for CLEO V2.
3
3
  *
4
+ * Global data directory is resolved via env-paths (XDG on Linux, platform
5
+ * conventions on macOS and Windows):
6
+ * Linux: ~/.local/share/cleo
7
+ * macOS: ~/Library/Application Support/cleo
8
+ * Windows: %LOCALAPPDATA%\cleo
9
+ *
4
10
  * Environment variables:
5
- * CLEO_HOME - Global installation directory (default: ~/.cleo)
11
+ * CLEO_HOME - Override global installation directory
6
12
  * CLEO_DIR - Project data directory (default: .cleo)
7
13
  *
8
14
  * @epic T4454
@@ -11,6 +17,8 @@
11
17
  import { existsSync, readFileSync } from 'node:fs';
12
18
  import { homedir } from 'node:os';
13
19
  import { dirname, join, resolve } from 'node:path';
20
+ import { ExitCode } from '@cleocode/contracts';
21
+ import { CleoError } from './errors.js';
14
22
  import { getPlatformPaths } from './system/platform-paths.js';
15
23
  /**
16
24
  * Check if a CLEO project is initialized at the given root.
@@ -151,31 +159,89 @@ export function getCleoDirAbsolute(cwd) {
151
159
  return resolve(cwd ?? process.cwd(), cleoDir);
152
160
  }
153
161
  /**
154
- * Get the project root from the CLEO directory.
155
- * Respects CLEO_ROOT env var, then derives from CLEO_DIR.
156
- * If CLEO_DIR is ".cleo", the project root is its parent.
162
+ * Get the project root by walking ancestor directories for `.cleo/` or `.git/`.
163
+ *
164
+ * Stops at the **first** ancestor directory that contains either sentinel
165
+ * directory and never drifts past it — even when multiple nested projects
166
+ * exist above the starting directory.
167
+ *
168
+ * Resolution order:
169
+ * 1. `CLEO_ROOT` env var — bypasses walk entirely (CI / test override)
170
+ * 2. `CLEO_DIR` env var (absolute path only) — derives project root from dirname
171
+ * 3. Walk ancestors from `cwd` (or `process.cwd()`) toward filesystem root:
172
+ * - `.cleo/` found → return that directory (project root)
173
+ * - `.git/` found (without `.cleo/` sibling) → throw `E_NOT_INITIALIZED`
174
+ * 4. Filesystem root reached without either → throw `E_NO_PROJECT`
157
175
  *
158
- * @param cwd - Optional working directory hint
159
- * @returns Absolute path to the project root
176
+ * @param cwd - Optional starting directory; defaults to `process.cwd()`
177
+ * @returns Absolute path to the project root directory (parent of `.cleo/`)
178
+ * @throws {CleoError} `ExitCode.CONFIG_ERROR` (`E_NOT_INITIALIZED`) when a
179
+ * `.git/` is found but no `.cleo/` is present at that level.
180
+ * @throws {CleoError} `ExitCode.NOT_FOUND` (`E_NO_PROJECT`) when neither
181
+ * sentinel is found in any ancestor.
160
182
  *
161
183
  * @remarks
162
- * Resolution order: CLEO_ROOT env var (if no cwd), parent of the resolved
163
- * .cleo directory (if it ends with /.cleo), or the cwd/process.cwd() fallback.
184
+ * `CLEO_ROOT` is an absolute-path escape hatch for environments where the
185
+ * working directory is unrelated to the project (CI tmpdirs, monorepo scripts,
186
+ * test harnesses). When set it is returned as-is without scanning ancestors.
187
+ *
188
+ * `CLEO_DIR` set to an absolute path (e.g. `/project/.cleo`) also bypasses
189
+ * the walk: the project root is derived as its `dirname`. This preserves
190
+ * backward compatibility for test harnesses that use `CLEO_DIR` to pin the
191
+ * project root.
192
+ *
193
+ * NEVER auto-creates `.cleo/`. Project initialisation is an explicit opt-in
194
+ * via `cleo init`.
164
195
  *
165
196
  * @example
166
197
  * ```typescript
167
- * const root = getProjectRoot(); // "/home/user/projects/myapp"
198
+ * // Running from packages/core inside the monorepo:
199
+ * const root = getProjectRoot(); // "/mnt/projects/cleocode"
168
200
  * ```
169
201
  */
170
202
  export function getProjectRoot(cwd) {
171
- if (!cwd && process.env['CLEO_ROOT']) {
203
+ // 1. Honour CLEO_ROOT env var — bypass walk entirely
204
+ if (process.env['CLEO_ROOT']) {
172
205
  return process.env['CLEO_ROOT'];
173
206
  }
174
- const cleoDirAbs = getCleoDirAbsolute(cwd);
175
- if (cleoDirAbs.endsWith('/.cleo') || cleoDirAbs.endsWith('\\.cleo')) {
176
- return dirname(cleoDirAbs);
207
+ // 2. If CLEO_DIR is an absolute path, derive the project root from it.
208
+ // This preserves backward compatibility for test harnesses that set
209
+ // CLEO_DIR=/some/absolute/path/.cleo to pin the project root.
210
+ const cleoDirEnv = process.env['CLEO_DIR'];
211
+ if (cleoDirEnv && isAbsolutePath(cleoDirEnv)) {
212
+ if (cleoDirEnv.endsWith('/.cleo') || cleoDirEnv.endsWith('\\.cleo')) {
213
+ return dirname(cleoDirEnv);
214
+ }
215
+ return cleoDirEnv;
216
+ }
217
+ const start = resolve(cwd ?? process.cwd());
218
+ let current = start;
219
+ // 2. Walk ancestors toward filesystem root
220
+ while (true) {
221
+ const cleoDir = join(current, '.cleo');
222
+ const gitDir = join(current, '.git');
223
+ if (existsSync(cleoDir)) {
224
+ // .cleo/ found — this is the project root
225
+ return current;
226
+ }
227
+ if (existsSync(gitDir)) {
228
+ // .git/ found but no .cleo/ sibling — not initialised
229
+ throw new CleoError(ExitCode.CONFIG_ERROR, `Run cleo init at ${current}`, {
230
+ fix: `cd ${current} && cleo init`,
231
+ });
232
+ }
233
+ // Move up one level
234
+ const parent = dirname(current);
235
+ if (parent === current) {
236
+ // Reached filesystem root without finding either sentinel
237
+ break;
238
+ }
239
+ current = parent;
177
240
  }
178
- return cwd ?? process.cwd();
241
+ // 3. No sentinel found in any ancestor
242
+ throw new CleoError(ExitCode.NOT_FOUND, 'Not inside a CLEO project. Run cleo init or cd to an existing project', {
243
+ fix: 'cleo init',
244
+ });
179
245
  }
180
246
  /**
181
247
  * Resolve a project-relative path to an absolute path.
package/dist/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAoB;IACvD,MAAM,IAAI,GAAG,WAAW,IAAI,cAAc,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,gBAAgB,EAAE,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACpE,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAAoB,EAAE,GAAY;IACnE,IAAI,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,mEAAmE;IACnE,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,YAAY,KAAK,GAAG,EAAE,CAAC;QAC5F,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;AAC5C,CAAC;AAED,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,IAAI,CAAC,uBAAuB,EAAE,EAAE,UAAU,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,eAAe,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IAE7D,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAE7D,iDAAiD;YACjD,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC;gBAC9E,OAAO,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;YACvC,CAAC;YACD,8CAA8C;YAC9C,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACnE,OAAO,MAAM,CAAC,YAAY,CAAC;YAC7B,CAAC;YAED,8CAA8C;YAC9C,IAAI,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YACnC,CAAC;YAED,oDAAoD;YACpD,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC;gBACrC,OAAO,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IAED,OAAO,yBAAyB,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAY;IAClD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IAE7D,IAAI,YAAY,GAAG,gBAAgB,CAAC;IACpC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,YAAY,IAAI,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;YACtF,IAAI,UAAU,EAAE,CAAC;gBACf,YAAY,GAAG,UAAU,CAAC;YAC5B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,WAAW;QACb,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;AACnE,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,iBAAiB;IACjB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,kCAAkC;IAClC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,WAAW;IACX,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,wCAAwC;AACxC,+EAA+E;AAE/E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,gBAAgB,EAAE,CAAC,GAAG,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,gBAAgB,EAAE,CAAC,KAAK,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,gBAAgB,EAAE,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,gBAAgB,EAAE,CAAC,MAAM,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,iFAAiF;QACjF,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChE,OAAO,IAAI,QAAQ,EAAE,CAAC;IACxB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3E,OAAO,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,6 @@
13
13
  export interface ProviderContext {
14
14
  providerId: string;
15
15
  providerName: string;
16
- /** Always false. CLI dispatch only. */
17
- supportsMcp: boolean;
18
16
  supportsHooks: boolean;
19
17
  supportsSpawn: boolean;
20
18
  instructionFilePattern?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-skill-generator.d.ts","sourceRoot":"","sources":["../../src/skills/dynamic-skill-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAcxE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CA4BtE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA2B5E"}
1
+ {"version":3,"file":"dynamic-skill-generator.d.ts","sourceRoot":"","sources":["../../src/skills/dynamic-skill-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAcxE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CA4BtE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA2B5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-skill-generator.js","sourceRoot":"","sources":["../../src/skills/dynamic-skill-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynamic-skill-generator.js","sourceRoot":"","sources":["../../src/skills/dynamic-skill-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAazD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAyB;IAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAElB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAyB;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,iCAAiC;IACjC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,MAAM,UAAU,GAAG;QACjB,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE;QAC/D,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE;QAC7D,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE;QAChE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE;QAClE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE;QAC9D,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE;KACtE,CAAC;IAEF,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAE/C,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAAwB;IAClE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,YAAY,OAAO,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,QAAQ,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,sBAAsB,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,kBAAkB;IAClB,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,gBAAgB;IAChB,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IAE7C,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -1,31 +1,222 @@
1
1
  /**
2
- * Agent Registry Accessor — CRUD operations for agent data in signaldock.db.
2
+ * Agent Registry Accessor — cross-DB CRUD for agent data.
3
3
  *
4
- * signaldock.db is the SSoT for ALL agent data: identity, credentials,
5
- * capabilities, skills, transport config. No agent data lives in tasks.db.
4
+ * Post-T310 (ADR-037), agent identity lives in the GLOBAL
5
+ * `$XDG_DATA_HOME/cleo/signaldock.db:agents` table; per-project
6
+ * visibility and overrides live in the PROJECT
7
+ * `.cleo/conduit.db:project_agent_refs` table.
6
8
  *
7
- * API keys are encrypted at rest using the crypto/credentials module.
9
+ * This module provides three module-level functions that perform the
10
+ * in-memory cross-DB join, plus the backward-compatible
11
+ * `AgentRegistryAccessor` class that wraps them.
8
12
  *
9
- * @see docs/specs/DATABASE-ARCHITECTURE.md
10
- * @task T234
13
+ * Architecture:
14
+ * global signaldock.db canonical identity (openGlobalDb)
15
+ * project conduit.db — project_agent_refs (openConduitDb)
16
+ * Join performed in Node (SQLite cannot cross-file-handle JOIN).
17
+ *
18
+ * @see .cleo/specs/T310-conduit-signaldock-spec.md §3.5
19
+ * @see .cleo/adrs/ADR-037-conduit-signaldock-separation.md
20
+ * @task T355
21
+ * @epic T310
22
+ */
23
+ import type { AgentCredential, AgentListFilter, AgentRegistryAPI, AgentWithProjectOverride } from '@cleocode/contracts';
24
+ /**
25
+ * Cross-DB agent lookup. Opens both the global signaldock.db and the
26
+ * current project's conduit.db, joins project_agent_refs ⨝ agents by
27
+ * agentId, and returns the merged view.
28
+ *
29
+ * Default (includeGlobal=false): returns null if no project_agent_refs row
30
+ * exists, even if the agent exists globally. An enabled=0 row is also treated
31
+ * as absent.
32
+ *
33
+ * includeGlobal=true: returns the global agent with `projectRef: null` if no
34
+ * project attachment row exists.
35
+ *
36
+ * Dangling soft-FK detection: if a project_agent_refs row exists but the
37
+ * referenced global agent does not, logs a WARN and returns null.
38
+ *
39
+ * @param projectRoot - Absolute path to the project root directory.
40
+ * @param agentId - Agent business identifier.
41
+ * @param opts.includeGlobal - When true, returns global identity even without project ref.
42
+ * @returns Merged agent record or null if not found.
43
+ *
44
+ * @task T355
45
+ * @epic T310
46
+ */
47
+ export declare function lookupAgent(projectRoot: string, agentId: string, opts?: {
48
+ includeGlobal?: boolean;
49
+ }): AgentWithProjectOverride | null;
50
+ /**
51
+ * Lists agents visible in the current project.
52
+ *
53
+ * Default (includeGlobal=false): INNER JOIN on project_agent_refs (enabled=1)
54
+ * — only agents explicitly attached to this project are returned.
55
+ *
56
+ * includeGlobal=true: returns all global agents regardless of project
57
+ * attachment, with projectRef populated for attached ones and null for the rest.
58
+ *
59
+ * includeDisabled=true: also returns agents with enabled=0 in project_agent_refs.
60
+ * Ignored when includeGlobal=true (all global agents are returned regardless).
61
+ *
62
+ * @param projectRoot - Absolute path to the project root directory.
63
+ * @param opts.includeGlobal - Include all global agents (bypasses project filter).
64
+ * @param opts.includeDisabled - Include agents with enabled=0 in project_agent_refs.
65
+ * @returns Array of merged agent records.
66
+ *
67
+ * @task T355
68
+ * @epic T310
69
+ */
70
+ export declare function listAgentsForProject(projectRoot: string, opts?: {
71
+ includeGlobal?: boolean;
72
+ includeDisabled?: boolean;
73
+ }): AgentWithProjectOverride[];
74
+ /**
75
+ * Creates a new agent: writes identity row to global signaldock.db AND attaches
76
+ * it to the current project via conduit.db:project_agent_refs.
77
+ *
78
+ * Write order: global first, then project ref. If the project ref write fails,
79
+ * the global row remains (recoverable via `cleo agent attach <id>`).
80
+ *
81
+ * API key derivation: HMAC-SHA256(machineKey || globalSalt, agentId) per ADR-037 §5.
82
+ *
83
+ * @param projectRoot - Absolute path to the project root directory.
84
+ * @param spec - Agent creation spec (without createdAt/updatedAt).
85
+ * @returns Merged agent record including the new project ref.
86
+ *
87
+ * @task T355
88
+ * @epic T310
89
+ */
90
+ export declare function createProjectAgent(projectRoot: string, spec: Omit<AgentCredential, 'createdAt' | 'updatedAt'>): AgentWithProjectOverride;
91
+ /**
92
+ * AgentRegistryAccessor — backward-compatible CRUD wrapper around the
93
+ * cross-DB module-level functions.
94
+ *
95
+ * Post-T310 (ADR-037), the constructor accepts the project root (same
96
+ * semantics as `projectPath` in the pre-T310 version). All operations are
97
+ * routed through the cross-DB functions above.
98
+ *
99
+ * @task T355
100
+ * @epic T310
11
101
  */
12
- import type { AgentCredential, AgentListFilter, AgentRegistryAPI } from '@cleocode/contracts';
13
- /** signaldock.db implementation of the AgentRegistryAPI. */
14
102
  export declare class AgentRegistryAccessor implements AgentRegistryAPI {
15
- private projectPath;
103
+ private readonly projectPath;
104
+ /**
105
+ * @param projectPath - Absolute path to the project root directory.
106
+ * Used as the `projectRoot` argument for all cross-DB operations.
107
+ * @task T355
108
+ * @epic T310
109
+ */
16
110
  constructor(projectPath: string);
17
- /** Ensure signaldock.db exists with full schema before any operation. */
18
- private ensureDb;
111
+ /**
112
+ * Ensure both databases exist with their full schemas before any operation.
113
+ *
114
+ * @task T355
115
+ * @epic T310
116
+ */
117
+ private ensureDbs;
118
+ /**
119
+ * Register (create or update) an agent in global signaldock.db and attach
120
+ * it to the current project via conduit.db:project_agent_refs.
121
+ *
122
+ * @param credential - Agent spec (without createdAt/updatedAt).
123
+ * @returns The registered agent credential.
124
+ * @task T355
125
+ * @epic T310
126
+ */
19
127
  register(credential: Omit<AgentCredential, 'createdAt' | 'updatedAt'>): Promise<AgentCredential>;
20
- get(agentId: string): Promise<AgentCredential | null>;
128
+ /**
129
+ * Get agent by agentId. Project-scoped by default (INNER JOIN).
130
+ *
131
+ * @param agentId - Agent business identifier.
132
+ * @param opts.includeGlobal - When true, returns global identity even without project ref.
133
+ * @returns The agent credential, or null if not found.
134
+ * @task T355
135
+ * @epic T310
136
+ */
137
+ get(agentId: string, opts?: {
138
+ includeGlobal?: boolean;
139
+ }): Promise<AgentCredential | null>;
140
+ /**
141
+ * Lists project-scoped agents (INNER JOIN on project_agent_refs with enabled=1).
142
+ *
143
+ * @param filter - Optional filter (active field maps to is_active in global agents).
144
+ * @returns Array of agent credentials visible in this project.
145
+ * @task T355
146
+ * @epic T310
147
+ */
21
148
  list(filter?: AgentListFilter): Promise<AgentCredential[]>;
149
+ /**
150
+ * Lists all global agents (no project filter). Exposed for `--global` CLI flag.
151
+ *
152
+ * @param filter - Optional filter (active field maps to is_active in global agents).
153
+ * @returns Array of all globally registered agent credentials.
154
+ * @task T355
155
+ * @epic T310
156
+ */
157
+ listGlobal(filter?: AgentListFilter): Promise<AgentCredential[]>;
158
+ /**
159
+ * Update agent identity fields in global signaldock.db.
160
+ * Project-specific fields (role, capabilitiesOverride) require direct
161
+ * conduit.db manipulation (not yet exposed by this method).
162
+ *
163
+ * @param agentId - Agent business identifier.
164
+ * @param updates - Partial set of fields to update.
165
+ * @returns The updated agent credential (project-scoped lookup).
166
+ * @task T355
167
+ * @epic T310
168
+ */
22
169
  update(agentId: string, updates: Partial<Omit<AgentCredential, 'agentId' | 'createdAt'>>): Promise<AgentCredential>;
170
+ /**
171
+ * Remove agent from current project (sets project_agent_refs.enabled=0).
172
+ * Does NOT delete from global signaldock.db (per ADR-037 §6 / Q4=C).
173
+ *
174
+ * @param agentId - Agent business identifier.
175
+ * @task T355
176
+ * @epic T310
177
+ */
23
178
  remove(agentId: string): Promise<void>;
179
+ /**
180
+ * Remove agent from global signaldock.db.
181
+ * Requires explicit opt-in. Warns if cross-project refs may exist.
182
+ *
183
+ * @param agentId - Agent business identifier.
184
+ * @param opts.force - Skip the global-delete warning when refs exist.
185
+ * @task T355
186
+ * @epic T310
187
+ */
188
+ removeGlobal(agentId: string, opts?: {
189
+ force?: boolean;
190
+ }): Promise<void>;
191
+ /**
192
+ * Rotate API key via cloud endpoint and re-encrypt with the new T310 KDF
193
+ * in global signaldock.db.
194
+ *
195
+ * @param agentId - Agent business identifier.
196
+ * @returns Object with agentId and a redacted new API key string.
197
+ * @task T355
198
+ * @epic T310
199
+ */
24
200
  rotateKey(agentId: string): Promise<{
25
201
  agentId: string;
26
202
  newApiKey: string;
27
203
  }>;
204
+ /**
205
+ * Get the most recently used active agent in the current project.
206
+ *
207
+ * @returns The most-recently-used active agent, or null if none found.
208
+ * @task T355
209
+ * @epic T310
210
+ */
28
211
  getActive(): Promise<AgentCredential | null>;
212
+ /**
213
+ * Update last_used_at in both global signaldock.db:agents and
214
+ * conduit.db:project_agent_refs.
215
+ *
216
+ * @param agentId - Agent business identifier.
217
+ * @task T355
218
+ * @epic T310
219
+ */
29
220
  markUsed(agentId: string): Promise<void>;
30
221
  }
31
222
  //# sourceMappingURL=agent-registry-accessor.d.ts.map