kiokuko-dsh 0.2.1 → 0.2.2

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 (286) hide show
  1. package/PERMISSIONS.md +21 -28
  2. package/README.ja.md +5 -2
  3. package/README.md +8 -2
  4. package/THIRD_PARTY_NOTICES.md +8 -0
  5. package/dist/client.cjs +2248 -1383
  6. package/dist/client.d.ts +3 -1
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/deep-thinker/configuration.d.ts.map +1 -1
  9. package/dist/deep-thinker/configuration.js +8 -5
  10. package/dist/deep-thinker/configuration.js.map +1 -1
  11. package/dist/deep-thinker/core/contracts.d.ts +107 -13
  12. package/dist/deep-thinker/core/contracts.d.ts.map +1 -1
  13. package/dist/deep-thinker/core/contracts.js +4 -2
  14. package/dist/deep-thinker/core/contracts.js.map +1 -1
  15. package/dist/deep-thinker/memory-finalizer.d.ts +10 -10
  16. package/dist/deep-thinker/memory-finalizer.js +2 -2
  17. package/dist/deep-thinker/memory-finalizer.js.map +1 -1
  18. package/dist/deep-thinker/report.d.ts +1 -1
  19. package/dist/deep-thinker/store.d.ts +10 -10
  20. package/dist/deep-thinker/store.d.ts.map +1 -1
  21. package/dist/deep-thinker/store.js +2 -2
  22. package/dist/deep-thinker/store.js.map +1 -1
  23. package/dist/dsh/completion-verifiers.d.ts +26 -0
  24. package/dist/dsh/completion-verifiers.d.ts.map +1 -0
  25. package/dist/dsh/completion-verifiers.js +9 -0
  26. package/dist/dsh/completion-verifiers.js.map +1 -0
  27. package/dist/dsh/config.d.ts +5 -1
  28. package/dist/dsh/config.d.ts.map +1 -1
  29. package/dist/dsh/core/host.d.ts +1 -1
  30. package/dist/dsh/core/host.d.ts.map +1 -1
  31. package/dist/dsh/core/host.js +49 -4
  32. package/dist/dsh/core/host.js.map +1 -1
  33. package/dist/dsh/core/index.d.ts +4 -4
  34. package/dist/dsh/core/tasks.d.ts.map +1 -1
  35. package/dist/dsh/core/tasks.js +7 -0
  36. package/dist/dsh/core/tasks.js.map +1 -1
  37. package/dist/dsh/core-runtime.d.ts +1 -0
  38. package/dist/dsh/core-runtime.d.ts.map +1 -1
  39. package/dist/dsh/core-runtime.js +4 -1
  40. package/dist/dsh/core-runtime.js.map +1 -1
  41. package/dist/dsh/decisions/config.d.ts +2 -2
  42. package/dist/dsh/enno-delegation.js +2 -2
  43. package/dist/dsh/enno-delegation.js.map +1 -1
  44. package/dist/dsh/execution-command.d.ts +4 -0
  45. package/dist/dsh/execution-command.d.ts.map +1 -0
  46. package/dist/dsh/execution-command.js +52 -0
  47. package/dist/dsh/execution-command.js.map +1 -0
  48. package/dist/dsh/execution-journal.d.ts +17 -0
  49. package/dist/dsh/execution-journal.d.ts.map +1 -0
  50. package/dist/dsh/execution-journal.js +69 -0
  51. package/dist/dsh/execution-journal.js.map +1 -0
  52. package/dist/dsh/execution-result.d.ts +20 -0
  53. package/dist/dsh/execution-result.d.ts.map +1 -0
  54. package/dist/dsh/execution-result.js +7 -0
  55. package/dist/dsh/execution-result.js.map +1 -0
  56. package/dist/dsh/execution-selection.d.ts +149 -22
  57. package/dist/dsh/execution-selection.d.ts.map +1 -1
  58. package/dist/dsh/execution-selection.js +18 -6
  59. package/dist/dsh/execution-selection.js.map +1 -1
  60. package/dist/dsh/host-adapter/admission.d.ts.map +1 -1
  61. package/dist/dsh/host-adapter/admission.js +20 -0
  62. package/dist/dsh/host-adapter/admission.js.map +1 -1
  63. package/dist/dsh/host-adapter/turn-state.js +1 -1
  64. package/dist/dsh/host-adapter/turn-state.js.map +1 -1
  65. package/dist/dsh/host-adapter.d.ts.map +1 -1
  66. package/dist/dsh/host-adapter.js +26 -13
  67. package/dist/dsh/host-adapter.js.map +1 -1
  68. package/dist/dsh/index.d.ts +4 -2
  69. package/dist/dsh/index.d.ts.map +1 -1
  70. package/dist/dsh/index.js +7 -0
  71. package/dist/dsh/index.js.map +1 -1
  72. package/dist/dsh/intake-gate.d.ts +1 -0
  73. package/dist/dsh/intake-gate.d.ts.map +1 -1
  74. package/dist/dsh/intake-gate.js +9 -1
  75. package/dist/dsh/intake-gate.js.map +1 -1
  76. package/dist/dsh/lisp/approval.d.ts +2 -1
  77. package/dist/dsh/lisp/approval.d.ts.map +1 -1
  78. package/dist/dsh/lisp/approval.js +4 -3
  79. package/dist/dsh/lisp/approval.js.map +1 -1
  80. package/dist/dsh/lisp/candidate.d.ts +3 -3
  81. package/dist/dsh/lisp/code-intelligence-contracts.d.ts +78 -0
  82. package/dist/dsh/lisp/code-intelligence-contracts.d.ts.map +1 -0
  83. package/dist/dsh/lisp/code-intelligence-contracts.js +54 -0
  84. package/dist/dsh/lisp/code-intelligence-contracts.js.map +1 -0
  85. package/dist/dsh/lisp/code-intelligence-provider.d.ts +116 -0
  86. package/dist/dsh/lisp/code-intelligence.d.ts +13 -0
  87. package/dist/dsh/lisp/code-intelligence.d.ts.map +1 -0
  88. package/dist/dsh/lisp/code-intelligence.js +181 -0
  89. package/dist/dsh/lisp/code-intelligence.js.map +1 -0
  90. package/dist/dsh/lisp/coding-choice.d.ts +1 -0
  91. package/dist/dsh/lisp/coding-choice.d.ts.map +1 -1
  92. package/dist/dsh/lisp/coding-choice.js +17 -6
  93. package/dist/dsh/lisp/coding-choice.js.map +1 -1
  94. package/dist/dsh/lisp/compiled-cache.d.ts.map +1 -1
  95. package/dist/dsh/lisp/compiled-cache.js +3 -2
  96. package/dist/dsh/lisp/compiled-cache.js.map +1 -1
  97. package/dist/dsh/lisp/contracts.d.ts +4 -0
  98. package/dist/dsh/lisp/contracts.d.ts.map +1 -1
  99. package/dist/dsh/lisp/contracts.js +1 -0
  100. package/dist/dsh/lisp/contracts.js.map +1 -1
  101. package/dist/dsh/lisp/manager.d.ts +8 -1
  102. package/dist/dsh/lisp/manager.d.ts.map +1 -1
  103. package/dist/dsh/lisp/manager.js +78 -24
  104. package/dist/dsh/lisp/manager.js.map +1 -1
  105. package/dist/dsh/lisp/model-result.d.ts.map +1 -1
  106. package/dist/dsh/lisp/model-result.js +35 -1
  107. package/dist/dsh/lisp/model-result.js.map +1 -1
  108. package/dist/dsh/lisp/proposal-batch.d.ts +2 -0
  109. package/dist/dsh/lisp/proposal-batch.d.ts.map +1 -1
  110. package/dist/dsh/lisp/proposal-batch.js +32 -2
  111. package/dist/dsh/lisp/proposal-batch.js.map +1 -1
  112. package/dist/dsh/lisp/sandbox.d.ts +3 -0
  113. package/dist/dsh/lisp/sandbox.d.ts.map +1 -1
  114. package/dist/dsh/lisp/sandbox.js +13 -6
  115. package/dist/dsh/lisp/sandbox.js.map +1 -1
  116. package/dist/dsh/lisp/surface.d.ts +1 -1
  117. package/dist/dsh/lisp/surface.d.ts.map +1 -1
  118. package/dist/dsh/lisp/surface.js +74 -20
  119. package/dist/dsh/lisp/surface.js.map +1 -1
  120. package/dist/dsh/lisp/worker.d.ts +2 -0
  121. package/dist/dsh/lisp/worker.d.ts.map +1 -1
  122. package/dist/dsh/lisp/worker.js +7 -5
  123. package/dist/dsh/lisp/worker.js.map +1 -1
  124. package/dist/dsh/memory-application.d.ts +1 -1
  125. package/dist/dsh/memory-application.d.ts.map +1 -1
  126. package/dist/dsh/memory-application.js +4 -3
  127. package/dist/dsh/memory-application.js.map +1 -1
  128. package/dist/dsh/model-auto/candidates.d.ts.map +1 -1
  129. package/dist/dsh/model-auto/candidates.js +31 -22
  130. package/dist/dsh/model-auto/candidates.js.map +1 -1
  131. package/dist/dsh/model-configuration.d.ts +145 -2
  132. package/dist/dsh/model-configuration.d.ts.map +1 -1
  133. package/dist/dsh/model-configuration.js +10 -3
  134. package/dist/dsh/model-configuration.js.map +1 -1
  135. package/dist/dsh/model-selection-ui.d.ts.map +1 -1
  136. package/dist/dsh/model-selection-ui.js +7 -2
  137. package/dist/dsh/model-selection-ui.js.map +1 -1
  138. package/dist/dsh/models/config-store.d.ts +8 -0
  139. package/dist/dsh/models/config-store.d.ts.map +1 -0
  140. package/dist/dsh/models/config-store.js +49 -0
  141. package/dist/dsh/models/config-store.js.map +1 -0
  142. package/dist/dsh/models/contracts.d.ts +107 -0
  143. package/dist/dsh/models/contracts.d.ts.map +1 -0
  144. package/dist/dsh/models/contracts.js +104 -0
  145. package/dist/dsh/models/contracts.js.map +1 -0
  146. package/dist/dsh/models/metadata.d.ts +7 -0
  147. package/dist/dsh/models/metadata.d.ts.map +1 -0
  148. package/dist/dsh/models/metadata.js +13 -0
  149. package/dist/dsh/models/metadata.js.map +1 -0
  150. package/dist/dsh/models/profiles.d.ts +10 -0
  151. package/dist/dsh/models/profiles.d.ts.map +1 -0
  152. package/dist/dsh/models/profiles.js +176 -0
  153. package/dist/dsh/models/profiles.js.map +1 -0
  154. package/dist/dsh/models/service.d.ts +97 -0
  155. package/dist/dsh/models/service.d.ts.map +1 -0
  156. package/dist/dsh/models/service.js +518 -0
  157. package/dist/dsh/models/service.js.map +1 -0
  158. package/dist/dsh/models/surface.d.ts +8 -0
  159. package/dist/dsh/models/surface.d.ts.map +1 -0
  160. package/dist/dsh/models/surface.js +162 -0
  161. package/dist/dsh/models/surface.js.map +1 -0
  162. package/dist/dsh/models/vendor/THIRD_PARTY_NOTICES.txt +134 -0
  163. package/dist/dsh/models/vendor/abortable.d.ts +3 -0
  164. package/dist/dsh/models/vendor/abortable.d.ts.map +1 -0
  165. package/dist/dsh/models/vendor/abortable.js +10 -0
  166. package/dist/dsh/models/vendor/abortable.js.map +1 -0
  167. package/dist/dsh/models/vendor/auth-contract.d.ts +67 -0
  168. package/dist/dsh/models/vendor/auth-contract.d.ts.map +1 -0
  169. package/dist/dsh/models/vendor/auth-contract.js +2 -0
  170. package/dist/dsh/models/vendor/auth-contract.js.map +1 -0
  171. package/dist/dsh/models/vendor/credentials.d.ts +58 -0
  172. package/dist/dsh/models/vendor/credentials.d.ts.map +1 -0
  173. package/dist/dsh/models/vendor/credentials.js +205 -0
  174. package/dist/dsh/models/vendor/credentials.js.map +1 -0
  175. package/dist/dsh/models/vendor/nous-oauth.d.ts +6 -0
  176. package/dist/dsh/models/vendor/nous-oauth.d.ts.map +1 -0
  177. package/dist/dsh/models/vendor/nous-oauth.js +113 -0
  178. package/dist/dsh/models/vendor/nous-oauth.js.map +1 -0
  179. package/dist/dsh/models/vendor/opencode-adapter.d.ts +38 -0
  180. package/dist/dsh/models/vendor/opencode-adapter.d.ts.map +1 -0
  181. package/dist/dsh/models/vendor/opencode-adapter.js +207 -0
  182. package/dist/dsh/models/vendor/opencode-adapter.js.map +1 -0
  183. package/dist/dsh/models/vendor/opencode-catalog.d.ts +73 -0
  184. package/dist/dsh/models/vendor/opencode-catalog.d.ts.map +1 -0
  185. package/dist/dsh/models/vendor/opencode-catalog.js +253 -0
  186. package/dist/dsh/models/vendor/opencode-catalog.js.map +1 -0
  187. package/dist/dsh/models/vendor/opencode-codec.d.ts +7 -0
  188. package/dist/dsh/models/vendor/opencode-codec.d.ts.map +1 -0
  189. package/dist/dsh/models/vendor/opencode-codec.js +107 -0
  190. package/dist/dsh/models/vendor/opencode-codec.js.map +1 -0
  191. package/dist/dsh/models/vendor/opencode-owned.generated.d.ts +114 -0
  192. package/dist/dsh/models/vendor/opencode-owned.generated.d.ts.map +1 -0
  193. package/dist/dsh/models/vendor/opencode-owned.generated.js +2867 -0
  194. package/dist/dsh/models/vendor/opencode-owned.generated.js.map +1 -0
  195. package/dist/dsh/models/vendor/opencode-replay.d.ts +17 -0
  196. package/dist/dsh/models/vendor/opencode-replay.d.ts.map +1 -0
  197. package/dist/dsh/models/vendor/opencode-replay.js +147 -0
  198. package/dist/dsh/models/vendor/opencode-replay.js.map +1 -0
  199. package/dist/dsh/models/vendor/opencode-sdk.d.ts +6 -0
  200. package/dist/dsh/models/vendor/opencode-sdk.d.ts.map +1 -0
  201. package/dist/dsh/models/vendor/opencode-sdk.js +49915 -0
  202. package/dist/dsh/models/vendor/opencode-sdk.js.map +7 -0
  203. package/dist/dsh/models/vendor/opencode-transport.d.ts +6 -0
  204. package/dist/dsh/models/vendor/opencode-transport.d.ts.map +1 -0
  205. package/dist/dsh/models/vendor/opencode-transport.js +70 -0
  206. package/dist/dsh/models/vendor/opencode-transport.js.map +1 -0
  207. package/dist/dsh/models/vendor/pi-ai.d.ts +23 -0
  208. package/dist/dsh/models/vendor/pi-ai.d.ts.map +1 -0
  209. package/dist/dsh/models/vendor/pi-ai.js +27 -0
  210. package/dist/dsh/models/vendor/pi-ai.js.map +1 -0
  211. package/dist/dsh/modules/lisp.d.ts +1 -1
  212. package/dist/dsh/modules/lisp.d.ts.map +1 -1
  213. package/dist/dsh/modules/lisp.js +1 -1
  214. package/dist/dsh/modules/lisp.js.map +1 -1
  215. package/dist/dsh/native-model-catalog.d.ts.map +1 -1
  216. package/dist/dsh/native-model-catalog.js +4 -3
  217. package/dist/dsh/native-model-catalog.js.map +1 -1
  218. package/dist/dsh/node-tap-summary.d.ts +6 -1
  219. package/dist/dsh/node-tap-summary.d.ts.map +1 -1
  220. package/dist/dsh/node-tap-summary.js +27 -2
  221. package/dist/dsh/node-tap-summary.js.map +1 -1
  222. package/dist/dsh/on-demand-intake.d.ts +1 -1
  223. package/dist/dsh/on-demand-intake.d.ts.map +1 -1
  224. package/dist/dsh/on-demand-intake.js +23 -11
  225. package/dist/dsh/on-demand-intake.js.map +1 -1
  226. package/dist/dsh/owned-evidence.d.ts +49 -0
  227. package/dist/dsh/owned-evidence.d.ts.map +1 -0
  228. package/dist/dsh/owned-evidence.js +69 -0
  229. package/dist/dsh/owned-evidence.js.map +1 -0
  230. package/dist/dsh/owned-execution.d.ts +98 -0
  231. package/dist/dsh/owned-execution.d.ts.map +1 -0
  232. package/dist/dsh/owned-execution.js +523 -0
  233. package/dist/dsh/owned-execution.js.map +1 -0
  234. package/dist/dsh/plan-transition.d.ts +5 -0
  235. package/dist/dsh/plan-transition.d.ts.map +1 -0
  236. package/dist/dsh/plan-transition.js +34 -0
  237. package/dist/dsh/plan-transition.js.map +1 -0
  238. package/dist/dsh/session-memory-finalizer.d.ts.map +1 -1
  239. package/dist/dsh/session-memory-finalizer.js +46 -3
  240. package/dist/dsh/session-memory-finalizer.js.map +1 -1
  241. package/dist/dsh/setup.d.ts +1 -1
  242. package/dist/dsh/setup.d.ts.map +1 -1
  243. package/dist/dsh/setup.js +2 -0
  244. package/dist/dsh/setup.js.map +1 -1
  245. package/dist/dsh/skill-prompts.json +1 -1
  246. package/dist/dsh/task-completion.d.ts +1 -0
  247. package/dist/dsh/task-completion.d.ts.map +1 -1
  248. package/dist/dsh/task-completion.js +19 -19
  249. package/dist/dsh/task-completion.js.map +1 -1
  250. package/dist/enno-oduno/schemas.d.ts +9 -9
  251. package/dist/enno-oduno/store.d.ts.map +1 -1
  252. package/dist/enno-oduno/store.js +12 -0
  253. package/dist/enno-oduno/store.js.map +1 -1
  254. package/dist/locale/en.json +1 -1
  255. package/dist/locale/ja.json +1 -1
  256. package/dist/locale/ko.json +1 -1
  257. package/dist/locale/zh-CN.json +1 -1
  258. package/dist/memory/application.d.ts +2 -1
  259. package/dist/memory/application.d.ts.map +1 -1
  260. package/dist/memory/application.js +26 -12
  261. package/dist/memory/application.js.map +1 -1
  262. package/dist/memory/evidence.d.ts +2 -0
  263. package/dist/memory/evidence.d.ts.map +1 -1
  264. package/dist/memory/evidence.js +3 -1
  265. package/dist/memory/evidence.js.map +1 -1
  266. package/dist/model-tools/contracts.d.ts +4 -4
  267. package/dist/models-client.cjs +635 -0
  268. package/dist/models-client.d.ts +26 -0
  269. package/dist/models-client.d.ts.map +1 -0
  270. package/dist/models-client.js +642 -0
  271. package/dist/models-client.js.map +1 -0
  272. package/docs/code-intelligence.md +149 -0
  273. package/docs/dsh-auth-LICENSE.txt +22 -0
  274. package/docs/dsh-auth-provenance.md +25 -0
  275. package/docs/dsh-plugin.md +19 -0
  276. package/docs/kiokuko-models.md +66 -0
  277. package/docs/lisp.md +107 -56
  278. package/docs/model-selection.ja.md +7 -9
  279. package/docs/model-selection.md +14 -12
  280. package/docs/owned-execution.md +99 -0
  281. package/lisp/supervisor.mjs +8 -2
  282. package/lisp/tools.lisp +31 -3
  283. package/migrations/035_owned_execution.sql +19 -0
  284. package/package.json +46 -11
  285. package/skills/kiokuko-lisp/SKILL.md +49 -67
  286. package/skills/kiokuko-soul/SKILL.md +7 -28
@@ -0,0 +1,523 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { createHash, randomUUID } from 'node:crypto';
3
+ import { readFile, open, rename, mkdir, rm, realpath, stat } from 'node:fs/promises';
4
+ import path from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { tmpdir } from 'node:os';
7
+ import * as z from 'zod/v4';
8
+ import { canonicalContentHash } from '../serialization/validate.js';
9
+ import { findSecret } from '../memory/secrets.js';
10
+ import { applicationSourceDigest, beginMemoryExecution, completeMemoryExecution } from '../memory/application.js';
11
+ import { beginTaskCompletionExecution, finishTaskCompletionExecution, saveTaskCompletionReceipt } from './task-completion.js';
12
+ import { observeProcessResult } from './execution-result.js';
13
+ import { parseTestSummary } from './node-tap-summary.js';
14
+ import { ExecutionJournal } from './execution-journal.js';
15
+ import { shellArguments } from './execution-command.js';
16
+ const hash = (data) => createHash('sha256').update(data).digest('hex');
17
+ const within = (root, target) => { const relative = path.relative(root, target); return relative === '' || !relative.startsWith('..' + path.sep) && relative !== '..' && !path.isAbsolute(relative); };
18
+ const safeText = (text) => findSecret(text) ? '[redacted secret-bearing text]' : text;
19
+ const ownedCalls = new WeakSet();
20
+ export const isOwnedExecutionCall = (execution) => ownedCalls.has(execution);
21
+ const fileInput = z.object({ path: z.string().min(1), content: z.string().optional(), expectedHash: z.string().nullable().optional(), oldText: z.string().optional(), newText: z.string().optional() }).strict();
22
+ const commandInput = z.object({ command: z.string().min(1), cwd: z.string().optional(), shell: z.enum(['bash', 'zsh']).default('bash'), background: z.boolean().default(false), timeoutMs: z.number().int().min(1).max(3600000).default(300000), destructiveTargets: z.array(z.string()).optional() }).strict();
23
+ const resultInput = z.object({ operationId: z.string().min(1), cancel: z.boolean().default(false) }).strict();
24
+ /** One owner for effects and observed evidence. Saved-result reads never execute an effect. */
25
+ export class OwnedExecutionService {
26
+ host;
27
+ #operations = new Map();
28
+ constructor(host) {
29
+ this.host = host;
30
+ }
31
+ current(execution) {
32
+ execution.signal.throwIfAborted();
33
+ const identity = this.host.resolve(execution);
34
+ if (!identity)
35
+ throw new Error('No current admitted execution owner');
36
+ return identity;
37
+ }
38
+ async persist(receipt, digest) {
39
+ const journal = this.journal(receipt.repositoryRoot);
40
+ try {
41
+ await journal.save({ digest, receipt });
42
+ }
43
+ catch {
44
+ receipt.persistence = 'pending';
45
+ }
46
+ try {
47
+ await this.host.runtime.withDatabase(db => {
48
+ const saved = db.prepare('SELECT request_digest FROM dsh_owned_operations WHERE operation_id=?').get(receipt.operationId);
49
+ if (saved && saved.request_digest !== digest)
50
+ throw new Error('Operation identity conflict');
51
+ db.prepare(`INSERT INTO dsh_owned_operations VALUES(?,?,?,?,?,?,?,?) ON CONFLICT(operation_id) DO UPDATE SET
52
+ state=excluded.state,receipt_json=excluded.receipt_json,updated_at=excluded.updated_at`)
53
+ .run(receipt.operationId, receipt.runId, receipt.sessionId, receipt.generation, digest, receipt.state, JSON.stringify({ ...receipt, persistence: 'saved' }), new Date().toISOString());
54
+ });
55
+ receipt.persistence = 'saved';
56
+ }
57
+ catch {
58
+ receipt.persistence = 'pending';
59
+ }
60
+ }
61
+ journal(root) {
62
+ return new ExecutionJournal(this.host.runtime.executionJournalDirectory ?? path.join(root, '.kioku', 'execution-journal'));
63
+ }
64
+ async snapshot(target) {
65
+ try {
66
+ return hash(await readFile(target));
67
+ }
68
+ catch (error) {
69
+ if (error.code === 'ENOENT')
70
+ return null;
71
+ throw error;
72
+ }
73
+ }
74
+ async unknownEffects(execution) {
75
+ const identity = this.host.resolve(execution);
76
+ if (!identity)
77
+ return;
78
+ try {
79
+ await this.host.runtime.withDatabase(db => {
80
+ db.prepare("UPDATE dsh_completion_executions SET outcome='unknown' WHERE run_id=? AND outcome='passed'").run(identity.runId);
81
+ saveTaskCompletionReceipt(db, identity.runId);
82
+ });
83
+ }
84
+ catch { /* Missing auxiliary evidence never rejects development. */ }
85
+ }
86
+ async evidence(identity, receipt, command, execute) {
87
+ let completion = false, memory = false;
88
+ let sourcePaths = [];
89
+ try {
90
+ await this.host.runtime.withDatabase(db => {
91
+ completion = beginTaskCompletionExecution(db, { runId: identity.runId, callId: receipt.operationId, command, repositoryRoot: identity.repositoryRoot, cwd: receipt.cwd });
92
+ if (completion) {
93
+ const method = db.prepare(`SELECT b.method_json FROM dsh_completion_executions e JOIN dsh_completion_bindings b
94
+ ON b.run_id=e.run_id AND b.method_digest=e.method_digest WHERE e.run_id=? AND e.call_id=? LIMIT 1`).get(identity.runId, receipt.operationId);
95
+ if (method)
96
+ sourcePaths = JSON.parse(method.method_json).sourcePaths;
97
+ }
98
+ });
99
+ }
100
+ catch { /* Evidence failure is exposed as unknown; effects continue. */ }
101
+ try {
102
+ memory = await this.host.runtime.withDatabase(db => beginMemoryExecution(db, identity, receipt.operationId, command, receipt.cwd));
103
+ }
104
+ catch { /* Memory bookkeeping cannot suppress completion observations. */ }
105
+ for (const source of sourcePaths) {
106
+ try {
107
+ const target = path.resolve(identity.repositoryRoot, source);
108
+ let before;
109
+ try {
110
+ before = await this.snapshot(target);
111
+ }
112
+ catch {
113
+ before = applicationSourceDigest(identity.repositoryRoot, [source]);
114
+ }
115
+ receipt.targets.push({ path: target, before, after: before });
116
+ }
117
+ catch { /* Unavailable source observations remain unverified. */ }
118
+ }
119
+ const argv = shellArguments(command);
120
+ const readOnly = argv && ['cat', 'head', 'tail', 'ls', 'pwd', 'wc', 'stat', 'readlink'].includes(path.basename(argv[0] ?? ''));
121
+ if (!completion && !readOnly)
122
+ await this.unknownEffects({ agent: identity.agent, callId: receipt.operationId, name: 'kioku_exec', signal: new AbortController().signal });
123
+ const result = await execute();
124
+ for (const target of receipt.targets) {
125
+ try {
126
+ target.after = await this.snapshot(target.path);
127
+ }
128
+ catch {
129
+ try {
130
+ target.after = applicationSourceDigest(identity.repositoryRoot, [path.relative(identity.repositoryRoot, target.path)]);
131
+ }
132
+ catch {
133
+ target.after = null;
134
+ }
135
+ }
136
+ }
137
+ if (this.host.resolve({ agent: identity.agent, callId: receipt.operationId, name: 'kioku_exec', signal: new AbortController().signal })?.generation === identity.generation) {
138
+ try {
139
+ await this.host.runtime.withDatabase(db => {
140
+ if (completion) {
141
+ finishTaskCompletionExecution(db, { runId: identity.runId, callId: receipt.operationId, result });
142
+ saveTaskCompletionReceipt(db, identity.runId);
143
+ const row = db.prepare(`SELECT e.source_digest,e.outcome,b.method_json FROM dsh_completion_executions e
144
+ JOIN dsh_completion_bindings b ON b.run_id=e.run_id AND b.method_digest=e.method_digest WHERE e.run_id=? AND e.call_id=? LIMIT 1`)
145
+ .get(identity.runId, receipt.operationId);
146
+ if (row) {
147
+ const method = JSON.parse(row.method_json);
148
+ let postSourceDigest;
149
+ try {
150
+ postSourceDigest = applicationSourceDigest(identity.repositoryRoot, method.sourcePaths);
151
+ }
152
+ catch { /* Missing inputs remain unknown. */ }
153
+ receipt.checks = [{ sourcePaths: method.sourcePaths, sourceDigest: row.source_digest, ...(postSourceDigest ? { postSourceDigest } : {}), outcome: row.outcome, assertion: method.assertion }];
154
+ receipt.verification = row.outcome === 'passed' ? 'passed' : row.outcome === 'failed' ? 'failed' : 'unknown';
155
+ }
156
+ }
157
+ if (memory)
158
+ completeMemoryExecution(db, identity, receipt.operationId, result);
159
+ });
160
+ }
161
+ catch {
162
+ receipt.verification = 'unknown';
163
+ }
164
+ }
165
+ else
166
+ receipt.verification = 'unknown';
167
+ return result;
168
+ }
169
+ async approve(identity, detail, signal) {
170
+ if (!await this.host.confirm?.(identity, detail, signal))
171
+ throw new Error('Destructive operation was not approved');
172
+ signal.throwIfAborted();
173
+ }
174
+ async reply(receipt, value = {}, replayed = false) {
175
+ let memoryStorage = 'unknown';
176
+ try {
177
+ memoryStorage = await this.host.runtime.withDatabase(db => db.prepare('SELECT status FROM dsh_memory_finalizations WHERE run_id=?').get(receipt.runId)?.status ?? 'not_scheduled');
178
+ }
179
+ catch { /* Development result is still returned. */ }
180
+ return { ...value, receipt, ...(replayed ? { replayed: true } : {}), status: { work: receipt.state, verification: receipt.verification ?? 'unknown', receiptPersistence: receipt.persistence, memoryStorage } };
181
+ }
182
+ async execute(name, raw, execution) {
183
+ const identity = this.current(execution);
184
+ ownedCalls.add(execution);
185
+ if (name === 'kioku_result')
186
+ return this.result(identity, resultInput.parse(raw));
187
+ const input = name === 'kioku_exec' ? commandInput.parse(raw) : fileInput.parse(raw);
188
+ if (name !== 'kioku_read' && this.host.planActive?.(identity.agent))
189
+ throw new Error('Plan is active. An explicit human implementation instruction or plan approval must exit it first.');
190
+ // Native call identity survives a generation change. Rebinding a replay to
191
+ // a new run/generation must conflict rather than repeat its side effects.
192
+ const operationId = canonicalContentHash({ session: identity.sessionId, call: execution.callId });
193
+ const digest = canonicalContentHash({ name, input, identity: { runId: identity.runId, sessionId: identity.sessionId, generation: identity.generation } });
194
+ const previous = this.#operations.get(operationId);
195
+ if (previous) {
196
+ if (previous.digest !== digest)
197
+ throw new Error('Operation ID reused with changed input');
198
+ return previous.done ?? previous.value ?? { receipt: previous.receipt };
199
+ }
200
+ const saved = await this.host.runtime.withDatabase(db => db.prepare('SELECT request_digest,receipt_json FROM dsh_owned_operations WHERE operation_id=?')
201
+ .get(operationId)).catch(() => undefined);
202
+ let outbox;
203
+ try {
204
+ outbox = await this.journal(identity.repositoryRoot).read(operationId);
205
+ }
206
+ catch (error) {
207
+ // Corruption is an identity conflict; an unavailable auxiliary directory
208
+ // may use the database reservation instead.
209
+ if (error instanceof SyntaxError)
210
+ throw error;
211
+ if (!saved && !['EACCES', 'EPERM', 'ENOTDIR', 'EIO'].includes(error.code ?? ''))
212
+ throw error;
213
+ }
214
+ if (saved || outbox) {
215
+ if (saved && saved.request_digest !== digest || outbox && outbox.digest !== digest)
216
+ throw new Error('Operation ID reused with changed input');
217
+ const prior = outbox?.receipt ?? JSON.parse(saved.receipt_json);
218
+ if (prior.state === 'started') {
219
+ prior.state = 'unknown';
220
+ prior.error = 'Host stopped before final receipt; effects will not be replayed.';
221
+ }
222
+ await this.persist(prior, digest);
223
+ return this.reply(prior, {}, true);
224
+ }
225
+ const receipt = { version: 1, operationId, runId: identity.runId, sessionId: identity.sessionId, generation: identity.generation, kind: name, repositoryRoot: identity.repositoryRoot, cwd: identity.repositoryRoot, targets: [], state: 'started', evidenceRef: `owned:${operationId}`, persistence: 'pending' };
226
+ const controller = new AbortController();
227
+ const operation = { digest, receipt, controller };
228
+ // A second concurrent call may have completed the database lookup too.
229
+ const concurrent = this.#operations.get(operationId);
230
+ if (concurrent) {
231
+ if (concurrent.digest !== digest)
232
+ throw new Error('Operation ID reused with changed input');
233
+ return concurrent.done ?? { receipt: concurrent.receipt };
234
+ }
235
+ this.#operations.set(operationId, operation);
236
+ const signal = AbortSignal.any([execution.signal, controller.signal]);
237
+ const journal = this.journal(identity.repositoryRoot);
238
+ try {
239
+ if (!await journal.reserve({ digest, receipt })) {
240
+ const prior = await journal.read(operationId);
241
+ if (!prior || prior.digest !== digest)
242
+ throw new Error('Operation journal identity conflict');
243
+ operation.receipt = prior.receipt;
244
+ if (prior.receipt.state === 'started') {
245
+ prior.receipt.state = 'unknown';
246
+ prior.receipt.error = 'Host stopped before final receipt; effects will not be replayed.';
247
+ }
248
+ await this.persist(prior.receipt, digest);
249
+ return this.reply(prior.receipt, {}, true);
250
+ }
251
+ }
252
+ catch (error) {
253
+ if (error instanceof SyntaxError || !(error instanceof Error) || !error.code) {
254
+ this.#operations.delete(operationId);
255
+ throw error;
256
+ }
257
+ // Storage is auxiliary. Reserve in SQLite when possible, and explicitly
258
+ // expose pending persistence if both stores are unavailable. Never retry
259
+ // an effect automatically to repair its storage.
260
+ receipt.persistenceError = 'Execution outbox unavailable; durable replay protection depends on the database reservation.';
261
+ }
262
+ await this.persist(receipt, digest);
263
+ const done = (async () => {
264
+ try {
265
+ operation.value = name === 'kioku_exec' ? await this.command(identity, receipt, input, signal)
266
+ : await this.file(identity, receipt, name, input, signal);
267
+ receipt.state = 'completed';
268
+ }
269
+ catch (error) {
270
+ receipt.state = 'unknown';
271
+ receipt.error = safeText(error instanceof Error ? error.message : String(error));
272
+ operation.value = { error: receipt.error };
273
+ receipt.verification = 'unknown';
274
+ }
275
+ await this.persist(receipt, digest);
276
+ return this.reply(receipt, operation.value);
277
+ })();
278
+ operation.done = done;
279
+ if (name === 'kioku_exec' && input.background)
280
+ return this.reply(receipt);
281
+ return done;
282
+ }
283
+ async file(identity, receipt, name, input, signal) {
284
+ const target = path.resolve(identity.repositoryRoot, input.path);
285
+ // Resolve the parent as well as existing target to identify symlink exits.
286
+ let actual;
287
+ try {
288
+ actual = await realpath(target);
289
+ }
290
+ catch (error) {
291
+ if (error.code !== 'ENOENT')
292
+ throw error;
293
+ let parent = path.dirname(target), suffix = path.basename(target);
294
+ for (;;) {
295
+ try {
296
+ actual = path.join(await realpath(parent), suffix);
297
+ break;
298
+ }
299
+ catch (cause) {
300
+ if (cause.code !== 'ENOENT')
301
+ throw cause;
302
+ suffix = path.join(path.basename(parent), suffix);
303
+ parent = path.dirname(parent);
304
+ }
305
+ }
306
+ }
307
+ const before = await this.snapshot(actual);
308
+ receipt.targets = [{ path: actual, before, after: before }];
309
+ await this.persist(receipt, this.#operations.get(receipt.operationId).digest);
310
+ if (input.expectedHash !== undefined && input.expectedHash !== before)
311
+ throw new Error('File changed before the operation');
312
+ if (name === 'kioku_read')
313
+ return { content: (await readFile(actual, 'utf8')), hash: before };
314
+ const disposable = await this.disposable(identity, actual);
315
+ const database = before !== null && (/\.(?:db|sqlite3?)(?:-(?:wal|shm|journal))?$/iu.test(actual) || (await readFile(actual)).subarray(0, 16).equals(Buffer.from('SQLite format 3\0')));
316
+ if (!disposable && (!within(identity.repositoryRoot, actual) || name === 'kioku_remove' || database))
317
+ await this.approve(identity, `Operation: ${name}\nTarget: ${actual}\nCurrent SHA256: ${before}`, signal);
318
+ signal.throwIfAborted();
319
+ if (await this.snapshot(actual) !== before)
320
+ throw new Error('File changed during operation approval');
321
+ if (name === 'kioku_remove')
322
+ await rm(actual, { recursive: false, force: false });
323
+ else {
324
+ const existing = before === null ? '' : await readFile(actual, 'utf8');
325
+ let content = input.content;
326
+ if (name === 'kioku_edit') {
327
+ if (!input.oldText || input.newText === undefined || existing.split(input.oldText).length !== 2)
328
+ throw new Error('Edit requires exactly one matching oldText');
329
+ content = existing.replace(input.oldText, input.newText);
330
+ }
331
+ if (content === undefined)
332
+ throw new Error('Write content is required');
333
+ await mkdir(path.dirname(actual), { recursive: true });
334
+ const mode = before === null ? 0o644 : (await stat(actual)).mode;
335
+ const temporary = path.join(path.dirname(actual), `.kioku-${randomUUID()}.tmp`);
336
+ try {
337
+ const file = await open(temporary, 'wx', mode);
338
+ try {
339
+ await file.chmod(mode & 0o7777);
340
+ await file.writeFile(content);
341
+ await file.sync();
342
+ }
343
+ finally {
344
+ await file.close();
345
+ }
346
+ signal.throwIfAborted();
347
+ await rename(temporary, actual);
348
+ }
349
+ finally {
350
+ await rm(temporary, { force: true });
351
+ }
352
+ if (await this.snapshot(actual) !== hash(content))
353
+ throw new Error('Written content differs from requested content');
354
+ }
355
+ receipt.targets[0].after = await this.snapshot(actual);
356
+ receipt.verification = 'passed';
357
+ return { applied: true };
358
+ }
359
+ async disposable(identity, target) {
360
+ if (within(identity.repositoryRoot, target))
361
+ return /^(?:dist|build|target|node_modules)(?:[/\\]|$)/u.test(path.relative(identity.repositoryRoot, target));
362
+ return within(await realpath(tmpdir()), target);
363
+ }
364
+ async command(identity, receipt, input, signal) {
365
+ receipt.cwd = await realpath(path.resolve(identity.repositoryRoot, input.cwd ?? '.'));
366
+ receipt.command = safeText(input.command);
367
+ receipt.commandDigest = hash(input.command);
368
+ await this.persist(receipt, this.#operations.get(receipt.operationId).digest);
369
+ // Known destructive intent gets a concrete review. Unknown arbitrary code
370
+ // is executed without pretending that static analysis can prove its effects.
371
+ const argv = shellArguments(input.command);
372
+ const removals = argv && path.basename(argv[0] ?? '') === 'rm' ? argv.slice(1).filter(arg => arg !== '--' && !arg.startsWith('-')) : undefined;
373
+ const disposableRemoval = removals?.length && (await Promise.all(removals.map(async (target) => {
374
+ const absolute = path.resolve(receipt.cwd, target);
375
+ try {
376
+ return this.disposable(identity, await realpath(absolute));
377
+ }
378
+ catch {
379
+ return false;
380
+ }
381
+ }))).every(Boolean);
382
+ let durableSql = !!(argv && ['sqlite3', 'psql', 'mysql'].includes(path.basename(argv[0] ?? '')) && /\b(?:insert|update|delete|replace|drop|alter|truncate|create)\b/iu.test(argv.slice(1).join(' ')));
383
+ if (durableSql && path.basename(argv[0]) === 'sqlite3' && argv[1] && !argv[1].startsWith('-')) {
384
+ const database = path.resolve(receipt.cwd, argv[1]);
385
+ durableSql = argv[1] !== ':memory:' && await this.snapshot(database) !== null && !await this.disposable(identity, database);
386
+ }
387
+ if (input.destructiveTargets?.length || durableSql || removals?.length && !disposableRemoval || !disposableRemoval && /(?:^|[;&|]\s*)(?:rm\s|git\s+(?:reset\s+--hard|clean\s+-[a-z]*f)|(?:drop\s+(?:table|database)|truncate\s+table)\b)/iu.test(input.command))
388
+ await this.approve(identity, `Command: ${safeText(input.command)}\nCwd: ${receipt.cwd}\nTargets: ${input.destructiveTargets?.join(', ') ?? 'see command'}`, signal);
389
+ return this.evidence(identity, receipt, input.command, async () => {
390
+ const result = await runOwnedProcess(input.command, receipt.cwd, input.shell, signal, input.timeoutMs, () => { receipt.processStarted = true; });
391
+ const output = result.content[0].text;
392
+ receipt.exitCode = result.value.exitCode;
393
+ receipt.signal = result.value.signal;
394
+ receipt.cancelled = result.value.aborted;
395
+ receipt.timedOut = result.value.timedOut;
396
+ receipt.processStarted = result.value.processStarted === true;
397
+ receipt.outputComplete = result.value.outputComplete === true;
398
+ receipt.observedBytes = Buffer.byteLength(output);
399
+ receipt.outputDigest = hash(output);
400
+ if (result.value.summary)
401
+ receipt.summary = result.value.summary;
402
+ receipt.verification = result.isError ? 'failed' : 'unknown';
403
+ const preview = safeText(output).slice(-24000);
404
+ receipt.displayedBytes = Buffer.byteLength(preview);
405
+ // Evidence consumes the full output here, before the public preview.
406
+ return result;
407
+ }).then(result => ({ exitCode: receipt.exitCode, output: safeText(result.content[0].text).slice(-24000) }));
408
+ }
409
+ async result(identity, input) {
410
+ const operation = this.#operations.get(input.operationId);
411
+ if (operation) {
412
+ if (operation.receipt.runId !== identity.runId || operation.receipt.sessionId !== identity.sessionId)
413
+ throw new Error('Result owner mismatch');
414
+ if (input.cancel)
415
+ operation.controller.abort();
416
+ if (operation.receipt.state === 'started')
417
+ return this.reply(operation.receipt);
418
+ await this.persist(operation.receipt, operation.digest);
419
+ return this.reply(operation.receipt, operation.value);
420
+ }
421
+ const saved = await this.host.runtime.withDatabase(db => db.prepare('SELECT receipt_json FROM dsh_owned_operations WHERE operation_id=? AND run_id=? AND session_id=?')
422
+ .get(input.operationId, identity.runId, identity.sessionId)).catch(() => undefined);
423
+ const journal = await this.journal(identity.repositoryRoot).read(input.operationId);
424
+ const receipt = journal?.receipt ?? (saved ? JSON.parse(saved.receipt_json) : undefined);
425
+ if (!receipt || receipt.runId !== identity.runId || receipt.sessionId !== identity.sessionId)
426
+ throw new Error('No result for this run/session');
427
+ if (journal)
428
+ await this.persist(receipt, journal.digest);
429
+ return this.reply(receipt.state === 'started' ? { ...receipt, state: 'unknown', error: 'Host restarted before final process result was saved; effects will not be replayed.' } : receipt);
430
+ }
431
+ async close() { for (const op of this.#operations.values())
432
+ op.controller.abort(); await Promise.allSettled([...this.#operations.values()].map(op => op.done)); }
433
+ }
434
+ /** Normal user environment, process group cancellation, bounded complete output. */
435
+ export function runOwnedProcess(command, cwd, shell, signal, timeoutMs, onStarted) {
436
+ if (signal.aborted)
437
+ return Promise.resolve(observeProcessResult({ isError: true, value: { exitCode: null, signal: null, timedOut: false, aborted: true, processStarted: false, outputComplete: false }, content: [{ type: 'text', text: '' }] }));
438
+ return new Promise(resolve => {
439
+ const env = { ...process.env };
440
+ delete env.NODE_TEST_CONTEXT;
441
+ const supervisor = fileURLToPath(new URL('../../lisp/supervisor.mjs', import.meta.url));
442
+ // Closing the host's liveness pipe also kills the process group after a
443
+ // crash. Environment is inherited, never serialized into launch arguments.
444
+ const child = spawn(process.execPath, [supervisor, JSON.stringify({ command: shell, args: ['-c', command], cwd, group: process.platform !== 'win32', report: true })], { cwd, env, stdio: ['pipe', 'pipe', 'pipe', 'ignore', 'pipe'] });
445
+ let terminal = '', processStarted = false;
446
+ child.stdio[4]?.on('data', (chunk) => {
447
+ if (terminal.length < 1024) {
448
+ terminal += chunk.toString('utf8');
449
+ if (!processStarted && terminal.includes('"processStarted":true')) {
450
+ processStarted = true;
451
+ onStarted?.();
452
+ }
453
+ }
454
+ });
455
+ const chunks = [];
456
+ let bytes = 0, timedOut = false, capped = false;
457
+ const stop = () => { try {
458
+ child.kill('SIGTERM');
459
+ }
460
+ catch { /* already exited */ } };
461
+ const timer = setTimeout(() => { timedOut = true; stop(); }, timeoutMs);
462
+ const abort = () => stop();
463
+ signal.addEventListener('abort', abort, { once: true });
464
+ if (signal.aborted)
465
+ stop();
466
+ const collect = (chunk) => { bytes += chunk.length; if (bytes <= 32 * 1024 * 1024)
467
+ chunks.push(chunk);
468
+ else {
469
+ capped = true;
470
+ stop();
471
+ } };
472
+ child.stdout.on('data', collect);
473
+ child.stderr.on('data', collect);
474
+ let error = '';
475
+ child.on('error', cause => { error = cause.message; });
476
+ child.on('close', (exitCode, termSignal) => {
477
+ clearTimeout(timer);
478
+ signal.removeEventListener('abort', abort);
479
+ const output = Buffer.concat(chunks).toString('utf8') + (error ? `\n${error}` : '');
480
+ try {
481
+ const reported = terminal.trim().split('\n').map(line => JSON.parse(line)).find(item => item.kind === 'completed' || item.kind === undefined);
482
+ if (!reported)
483
+ throw new Error('Missing completion');
484
+ exitCode = reported.exitCode;
485
+ termSignal = reported.signal;
486
+ }
487
+ catch {
488
+ error ||= 'Missing final process report';
489
+ }
490
+ const outputComplete = !capped && !error && !timedOut && !signal.aborted && !termSignal;
491
+ const summary = outputComplete ? parseTestSummary(output, true) : undefined;
492
+ resolve(observeProcessResult({ isError: exitCode !== 0 || !!termSignal || timedOut || signal.aborted || capped || !!error,
493
+ value: { exitCode, signal: termSignal, timedOut, aborted: signal.aborted, processStarted, outputComplete, ...(summary ? { summary } : {}) }, content: [{ type: 'text', text: output }] }));
494
+ });
495
+ });
496
+ }
497
+ export function mountOwnedExecution(ctx, host) {
498
+ const service = new OwnedExecutionService(host), disposers = [];
499
+ const implementations = new Set();
500
+ for (const name of ['kioku_read', 'kioku_write', 'kioku_edit', 'kioku_remove', 'kioku_exec', 'kioku_result']) {
501
+ const execute = async (args, execution) => JSON.parse(JSON.stringify(await service.execute(name, args, execution)));
502
+ implementations.add(execute);
503
+ disposers.push(ctx.tools.register({ name, modelFacing: true,
504
+ description: name === 'kioku_exec' ? 'Execute bash/zsh with the normal user environment and child processes. Project development is authorized. Declare destructiveTargets for source/data deletion or durable DB mutation. Background results must be collected with kioku_result. Host receipts are observations, not model verdicts.' : name === 'kioku_result' ? 'Read or cancel an owned process by operationId. Never re-executes the command; final receipts distinguish process, verification and persistence status.' : `Kiokuko owned ${name.slice(6)}. Project reads/writes/edits require no extra approval. Source/data deletion and external writes require a concrete confirmation. expectedHash checks concurrent changes.`,
505
+ parameters: JSON.parse(JSON.stringify(z.toJSONSchema(name === 'kioku_exec' ? commandInput : name === 'kioku_result' ? resultInput : fileInput))),
506
+ output: { schema: {}, render: (_, value) => [{ type: 'text', text: JSON.stringify(value) }] }, execute }));
507
+ }
508
+ if (ctx.on && ctx.tools.get)
509
+ disposers.push(ctx.on('tools/pre-execute', (execution, next) => {
510
+ if (implementations.has(ctx.tools.get(execution.name, execution.agent)?.execute))
511
+ ownedCalls.add(execution);
512
+ return next();
513
+ }, { prepend: true }));
514
+ if (ctx.on)
515
+ disposers.push(ctx.on('tools/pre-execute', async (execution, next) => {
516
+ if (['lisp_eval', 'lisp_call', 'lisp_define', 'lisp_hot_install', 'lisp_hot_call'].includes(execution.name))
517
+ await service.unknownEffects(execution);
518
+ return next();
519
+ }, { prepend: true }));
520
+ return async () => { for (const dispose of disposers.reverse())
521
+ dispose(); await service.close(); };
522
+ }
523
+ //# sourceMappingURL=owned-execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owned-execution.js","sourceRoot":"","sources":["../../src/dsh/owned-execution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function implementationRequested(messages: readonly any[]): boolean;
2
+ export declare function mountPlanTransition(ctx: {
3
+ on(name: string, handler: (...args: any[]) => unknown, options?: any): () => void;
4
+ }, plan: any): () => void;
5
+ //# sourceMappingURL=plan-transition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-transition.d.ts","sourceRoot":"","sources":["../../src/dsh/plan-transition.ts"],"names":[],"mappings":"AAUA,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,SAAS,GAAG,EAAE,GAAG,OAAO,CAMzE;AACD,wBAAgB,mBAAmB,CAAC,GAAG,EAAC;IAAC,EAAE,CAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,CAAC,GAAG,IAAI,EAAC,GAAG,EAAE,KAAG,OAAO,EAAC,OAAO,CAAC,EAAC,GAAG,GAAE,MAAI,IAAI,CAAA;CAAC,EAAC,IAAI,EAAC,GAAG,GAAE,MAAI,IAAI,CAOlI"}
@@ -0,0 +1,34 @@
1
+ /** Only current human messages can authorize an implementation transition. */
2
+ function instructionLines(text) {
3
+ const lines = [];
4
+ let fence;
5
+ for (const line of text.split('\n')) {
6
+ const marker = line.match(/^\s*(`{3,}|~{3,})/u)?.[1];
7
+ if (marker) {
8
+ if (!fence)
9
+ fence = marker;
10
+ else if (marker[0] === fence[0] && marker.length >= fence.length)
11
+ fence = undefined;
12
+ continue;
13
+ }
14
+ if (!fence && !/^\s*>/u.test(line))
15
+ lines.push(line);
16
+ }
17
+ return lines;
18
+ }
19
+ export function implementationRequested(messages) {
20
+ return messages.some(message => message?.role === 'user' && (!message.source || message.source.kind === 'user')
21
+ && (typeof message.content === 'string' ? [message.content] : (message.content ?? []).filter((block) => block.type === 'text').map((block) => block.text))
22
+ .some((text) => instructionLines(text).some(line => /^(?:\s*)(?:please\s+)?(?:implement(?:\s+(?:this|the|it|plan))?|go ahead(?:\s+and\s+implement)?|実装(?:して|しろ|せよ|を開始|を進め)|(?:この|その)?(?:プラン|計画)(?:を)?(?:実装|承認)|承認(?:する|した))\b/iu.test(line)
23
+ || /^(?:\s*)(?:実装して|実装しろ|実装を開始|実装を進め|(?:この|その)?(?:プラン|計画)を(?:実装|承認)|承認する)/u.test(line))));
24
+ }
25
+ export function mountPlanTransition(ctx, plan) {
26
+ return ctx.on('agent/pre-step', async (payload, next) => {
27
+ if (plan?.get(payload.agent)?.active && implementationRequested(payload.messages ?? []))
28
+ plan.set(payload.agent, false);
29
+ // Native Plan commits pending changes at an accepted boundary. Never reject
30
+ // this step merely because get().active still reflects the old state.
31
+ return next();
32
+ }, { prepend: true });
33
+ }
34
+ //# sourceMappingURL=plan-transition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-transition.js","sourceRoot":"","sources":["../../src/dsh/plan-transition.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,SAAS,gBAAgB,CAAC,IAAW;IACnC,MAAM,KAAK,GAAU,EAAE,CAAC;IAAA,IAAI,KAAsB,CAAA;IAClD,KAAI,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,GAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAClD,IAAG,MAAM,EAAC,CAAC;YAAA,IAAG,CAAC,KAAK;gBAAC,KAAK,GAAC,MAAM,CAAC;iBAAK,IAAG,MAAM,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,CAAC,CAAC,IAAE,MAAM,CAAC,MAAM,IAAE,KAAK,CAAC,MAAM;gBAAC,KAAK,GAAC,SAAS,CAAC;YAAA,SAAQ;QAAA,CAAC;QACrH,IAAG,CAAC,KAAK,IAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AACD,MAAM,UAAU,uBAAuB,CAAC,QAAwB;IAC9D,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;WAC1G,CAAC,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAS,EAAC,EAAE,CAAA,KAAK,CAAC,IAAI,KAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAS,EAAC,EAAE,CAAA,KAAK,CAAC,IAAI,CAAC,CAAC;aACzJ,IAAI,CAAC,CAAC,IAAW,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA,EAAE,CACvD,4KAA4K,CAAC,IAAI,CAAC,IAAI,CAAC;eACpL,wEAAwE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACjG,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,GAA4E,EAAC,IAAQ;IACvH,OAAO,GAAG,CAAC,EAAE,CAAC,gBAAgB,EAAC,KAAK,EAAC,OAAW,EAAC,IAAqB,EAAC,EAAE;QACvE,IAAG,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,QAAQ,IAAE,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAC,KAAK,CAAC,CAAA;QAClH,4EAA4E;QAC5E,sEAAsE;QACtE,OAAO,IAAI,EAAE,CAAA;IACf,CAAC,EAAC,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAA;AACnB,CAAC"}