kiokuko-dsh 0.2.30 → 0.2.32

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 (85) hide show
  1. package/README.ja.md +1 -0
  2. package/dist/client.cjs +208 -3
  3. package/dist/client.d.ts +1 -0
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/dsh/composition.d.ts.map +1 -1
  6. package/dist/dsh/composition.js +2 -0
  7. package/dist/dsh/composition.js.map +1 -1
  8. package/dist/dsh/core/host.d.ts.map +1 -1
  9. package/dist/dsh/core/host.js +0 -10
  10. package/dist/dsh/core/host.js.map +1 -1
  11. package/dist/dsh/host-adapter/routing.d.ts.map +1 -1
  12. package/dist/dsh/host-adapter/routing.js +131 -114
  13. package/dist/dsh/host-adapter/routing.js.map +1 -1
  14. package/dist/dsh/host-adapter.d.ts.map +1 -1
  15. package/dist/dsh/host-adapter.js +2 -1
  16. package/dist/dsh/host-adapter.js.map +1 -1
  17. package/dist/dsh/index.d.ts.map +1 -1
  18. package/dist/dsh/index.js +0 -8
  19. package/dist/dsh/index.js.map +1 -1
  20. package/dist/dsh/lisp/coding-preparation.d.ts +1 -1
  21. package/dist/dsh/lisp/coding-preparation.d.ts.map +1 -1
  22. package/dist/dsh/lisp/coding-preparation.js +1 -1
  23. package/dist/dsh/lisp/coding-preparation.js.map +1 -1
  24. package/dist/dsh/lisp/compiled-cache.d.ts +1 -1
  25. package/dist/dsh/lisp/compiled-cache.d.ts.map +1 -1
  26. package/dist/dsh/lisp/compiled-cache.js +12 -3
  27. package/dist/dsh/lisp/compiled-cache.js.map +1 -1
  28. package/dist/dsh/lisp/manager.d.ts +1 -0
  29. package/dist/dsh/lisp/manager.d.ts.map +1 -1
  30. package/dist/dsh/lisp/manager.js +52 -51
  31. package/dist/dsh/lisp/manager.js.map +1 -1
  32. package/dist/dsh/lisp/store.d.ts +4 -0
  33. package/dist/dsh/lisp/store.d.ts.map +1 -1
  34. package/dist/dsh/lisp/store.js +61 -15
  35. package/dist/dsh/lisp/store.js.map +1 -1
  36. package/dist/dsh/lisp/surface.d.ts.map +1 -1
  37. package/dist/dsh/lisp/surface.js +30 -5
  38. package/dist/dsh/lisp/surface.js.map +1 -1
  39. package/dist/dsh/lisp-tool-identity.d.ts +5 -0
  40. package/dist/dsh/lisp-tool-identity.d.ts.map +1 -1
  41. package/dist/dsh/lisp-tool-identity.js +10 -0
  42. package/dist/dsh/lisp-tool-identity.js.map +1 -1
  43. package/dist/dsh/model-routing.d.ts +1 -0
  44. package/dist/dsh/model-routing.d.ts.map +1 -1
  45. package/dist/dsh/model-routing.js +4 -0
  46. package/dist/dsh/model-routing.js.map +1 -1
  47. package/dist/dsh/models/index.d.ts +6 -0
  48. package/dist/dsh/models/index.d.ts.map +1 -0
  49. package/dist/dsh/models/index.js +8 -0
  50. package/dist/dsh/models/index.js.map +1 -0
  51. package/dist/dsh/models/surface.d.ts +1 -1
  52. package/dist/dsh/models/surface.d.ts.map +1 -1
  53. package/dist/dsh/models/surface.js +21 -13
  54. package/dist/dsh/models/surface.js.map +1 -1
  55. package/dist/dsh/native-tool-surface.d.ts +16 -0
  56. package/dist/dsh/native-tool-surface.d.ts.map +1 -0
  57. package/dist/dsh/native-tool-surface.js +64 -0
  58. package/dist/dsh/native-tool-surface.js.map +1 -0
  59. package/dist/dsh/on-demand-intake.d.ts.map +1 -1
  60. package/dist/dsh/on-demand-intake.js +57 -25
  61. package/dist/dsh/on-demand-intake.js.map +1 -1
  62. package/dist/dsh/session-recovery-surface.d.ts +7 -0
  63. package/dist/dsh/session-recovery-surface.d.ts.map +1 -0
  64. package/dist/dsh/session-recovery-surface.js +86 -0
  65. package/dist/dsh/session-recovery-surface.js.map +1 -0
  66. package/dist/dsh/session-recovery.d.ts +78 -0
  67. package/dist/dsh/session-recovery.d.ts.map +1 -0
  68. package/dist/dsh/session-recovery.js +303 -0
  69. package/dist/dsh/session-recovery.js.map +1 -0
  70. package/dist/dsh/skill-prompts.json +1 -1
  71. package/dist/locale/en.json +1 -1
  72. package/dist/locale/ja.json +1 -1
  73. package/dist/locale/ko.json +1 -1
  74. package/dist/locale/zh-CN.json +1 -1
  75. package/dist/recovery-client.d.ts +5 -0
  76. package/dist/recovery-client.d.ts.map +1 -0
  77. package/dist/recovery-client.js +166 -0
  78. package/dist/recovery-client.js.map +1 -0
  79. package/docs/lisp.md +20 -2
  80. package/docs/session-recovery.md +24 -0
  81. package/dsh/cordis.patch.yml +4 -0
  82. package/migrations/049_lisp_session_hosts.sql +10 -0
  83. package/package.json +6 -2
  84. package/skills/coding-ideal-routine-skill/SKILL.md +28 -1
  85. package/skills/kiokuko-lisp/SKILL.md +4 -4
@@ -43,6 +43,7 @@ export declare class LispManager {
43
43
  readonly enabled: Map<string, string>;
44
44
  constructor(options: ManagerOptions);
45
45
  start(): Promise<void>;
46
+ private claimSession;
46
47
  private entry;
47
48
  private protectedRoots;
48
49
  private authorizeCodingTask;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/manager.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { runManagedOperation, observeManagedResult, managedAdmissionDenied, isMa
3
3
  import { LispRecoverySession } from './recovery.js';
4
4
  import { CodeIntelligenceAdapterV1 } from './code-intelligence.js';
5
5
  import { CODE_METHODS } from './code-intelligence-contracts.js';
6
- import { mkdir, mkdtemp, open, readFile, realpath, rm, unlink, writeFile } from 'node:fs/promises';
6
+ import { mkdir, mkdtemp, open, readFile, realpath, rm, writeFile } from 'node:fs/promises';
7
7
  import { dirname, isAbsolute, join } from 'node:path';
8
8
  import { createHash, randomUUID } from 'node:crypto';
9
9
  import { fileURLToPath } from 'node:url';
@@ -71,7 +71,9 @@ export class LispManager {
71
71
  #taskTools;
72
72
  #hot;
73
73
  #closed = false;
74
- #lock = false;
74
+ #hostId = randomUUID();
75
+ #claims = new Set();
76
+ #ownsSessions = false;
75
77
  #artifactReserved = 0;
76
78
  #admissionQueue = Promise.resolve();
77
79
  #inflight = new Map();
@@ -102,59 +104,43 @@ export class LispManager {
102
104
  async start() {
103
105
  await verifyLispVendor(this.#library);
104
106
  await mkdir(this.options.dataRoot, { recursive: true, mode: 0o700 });
105
- const lockPath = join(this.options.dataRoot, 'host.lock');
107
+ // Older versions hold an exclusive lock and cannot safely coexist with this
108
+ // session-scoped protocol. Preserve their lock; never steal a live host.
106
109
  try {
107
- const lock = await open(lockPath, 'wx', 0o600);
108
- try {
109
- await lock.writeFile(JSON.stringify({ pid: process.pid }));
110
- await lock.sync();
111
- this.#lock = true;
112
- }
113
- finally {
114
- await lock.close();
115
- }
116
- }
117
- catch (error) {
118
- if (error.code !== 'EEXIST')
119
- throw error;
120
- const saved = JSON.parse(await readFile(lockPath, 'utf8'));
110
+ const saved = JSON.parse(await readFile(join(this.options.dataRoot, 'host.lock'), 'utf8'));
121
111
  if (!Number.isInteger(saved.pid) || saved.pid < 1)
122
112
  fail('HOST_LOCK', 'Lisp のホストロックが破損しています。');
123
113
  try {
124
114
  process.kill(saved.pid, 0);
125
- fail('HOST_LOCK', '別のホストが Lisp の状態を使用中です。');
115
+ fail('HOST_LOCK', '旧バージョンの Lisp ホストが使用中です。そのホストを終了してから再開してください。');
126
116
  }
127
117
  catch (check) {
128
118
  if (check.code !== 'ESRCH')
129
119
  throw check;
130
120
  }
131
- await unlink(lockPath);
132
- const lock = await open(lockPath, 'wx', 0o600);
133
- try {
134
- await lock.writeFile(JSON.stringify({ pid: process.pid }));
135
- await lock.sync();
136
- this.#lock = true;
137
- }
138
- finally {
139
- await lock.close();
140
- }
141
121
  }
122
+ catch (error) {
123
+ if (error.code !== 'ENOENT')
124
+ throw error;
125
+ }
126
+ await this.#store.expireResults();
127
+ for (const session of await this.#store.start())
128
+ this.enabled.set(session.session_id, session.root_path);
129
+ await this.#hot.catalog.expire();
130
+ }
131
+ async claimSession(owner) {
132
+ if (this.#closed)
133
+ fail('HOST_STOPPED', 'プラグインが停止しています。');
134
+ const claim = this.#store.claimSession(owner, this.#hostId);
135
+ this.#claims.add(claim);
142
136
  try {
143
- await this.#store.expireResults();
144
- for (const session of await this.#store.start())
145
- this.enabled.set(session.session_id, session.root_path);
146
- await this.#hot.catalog.expire();
147
- await this.#store.database(db => {
148
- const journal = new ManagedOperationJournal(db);
149
- for (const row of db.prepare(`SELECT scope_id FROM dsh_managed_scopes WHERE json_extract(scope_json,'$.runtimeIdentity') LIKE 'sbcl:%'`).all()) {
150
- journal.recover(row.scope_id);
151
- }
152
- });
137
+ await claim;
138
+ this.#ownsSessions = true;
139
+ if (this.#closed)
140
+ fail('HOST_STOPPED', 'プラグインが停止しています。');
153
141
  }
154
- catch (error) {
155
- await unlink(lockPath);
156
- this.#lock = false;
157
- throw error;
142
+ finally {
143
+ this.#claims.delete(claim);
158
144
  }
159
145
  }
160
146
  entry(owner) {
@@ -175,12 +161,11 @@ export class LispManager {
175
161
  if (workflow?.protocol && this.#config.executionMode !== 'protected')
176
162
  fail('PROTOCOL_PROTECTED_REQUIRED', 'This bounded protocol requires protected Lisp computation. Disable the existing Lisp session before binding, then select protected mode; use owned file/test tools for effects.');
177
163
  const native = this.taskAuthority.current()?.nativeCommands;
178
- if (native && !workflow?.protocol) {
164
+ if (native && !workflow?.protocol)
179
165
  native.assertCurrent();
180
- return;
181
- }
182
- if (workflow && (workflow.repositoryRoot !== owner.root || workflow.choice.state !== 'yes' || !workflow.definition || ['cancelled', 'superseded', 'completed'].includes(workflow.state)))
166
+ else if (workflow && (workflow.repositoryRoot !== owner.root || workflow.choice.state !== 'yes' || !workflow.definition || ['cancelled', 'superseded', 'completed'].includes(workflow.state)))
183
167
  fail('CODING_CHOICE_PENDING', 'このタスクの Goal と条件を定め、Lisp の選択に回答してから実行してください。');
168
+ await this.claimSession(owner);
184
169
  }
185
170
  async enable(owner, hostBusy = false, signal) {
186
171
  await this.authorizeCodingTask(owner);
@@ -972,11 +957,22 @@ export class LispManager {
972
957
  }
973
958
  async dispatch(owner, tool, input, signal) {
974
959
  try {
975
- if (!['lisp_status', 'lisp_hot_status', 'lisp_inspect', 'lisp_cancel'].includes(tool))
976
- await this.authorizeCodingTask(owner);
977
960
  if (tool === 'lisp_status')
978
961
  return await this.status(owner, z.number().int().nonnegative().parse(input.offset ?? 0));
979
962
  const state = this.entry(owner);
963
+ if (!['lisp_hot_status', 'lisp_inspect', 'lisp_cancel'].includes(tool))
964
+ await this.authorizeCodingTask(owner);
965
+ if (tool === 'lisp_cancel')
966
+ await this.claimSession(owner);
967
+ if (tool === 'lisp_inspect') {
968
+ try {
969
+ await this.claimSession(owner);
970
+ }
971
+ catch (error) {
972
+ if (!(error instanceof LispError) || error.code !== 'SESSION_IN_USE')
973
+ throw error;
974
+ }
975
+ }
980
976
  if (tool === 'lisp_hot_status')
981
977
  return await this.#hot.status(owner, input);
982
978
  if (tool === 'lisp_describe' && typeof input.toolRef === 'string') {
@@ -1510,6 +1506,7 @@ export class LispManager {
1510
1506
  });
1511
1507
  }
1512
1508
  async recoverBound(owner, signal) {
1509
+ await this.claimSession(owner);
1513
1510
  const managed = await this.managedUnresolved(owner);
1514
1511
  if (managed.unknownCount > 0)
1515
1512
  return { ok: false, code: 'RECONCILIATION_REQUIRED',
@@ -1543,6 +1540,7 @@ export class LispManager {
1543
1540
  return this.status(owner);
1544
1541
  }
1545
1542
  async abandon(owner, id) {
1543
+ await this.claimSession(owner);
1546
1544
  await this.stopTaskWorkers(owner.sessionId);
1547
1545
  const state = this.entry(owner);
1548
1546
  await this.cancel(state);
@@ -1561,6 +1559,7 @@ export class LispManager {
1561
1559
  });
1562
1560
  }
1563
1561
  async restoreBound(owner, id, signal) {
1562
+ await this.claimSession(owner);
1564
1563
  const state = this.entry(owner);
1565
1564
  await this.cancel(state);
1566
1565
  await Promise.allSettled([...this.#executions].filter(([, session]) => session === owner.sessionId).map(([promise]) => promise));
@@ -1583,6 +1582,7 @@ export class LispManager {
1583
1582
  }
1584
1583
  }
1585
1584
  async disable(owner) {
1585
+ await this.claimSession(owner);
1586
1586
  await this.stopTaskWorkers(owner.sessionId);
1587
1587
  if (await this.isTaskMode(owner)) {
1588
1588
  await Promise.allSettled([...this.#executions].filter(([, session]) => session === owner.sessionId).map(([promise]) => promise));
@@ -1615,9 +1615,10 @@ export class LispManager {
1615
1615
  await this.stopTaskWorkers(sessionId);
1616
1616
  await Promise.all([...this.#agents.values()].map(state => this.cancel(state)));
1617
1617
  await Promise.allSettled([...this.#executions.keys(), ...[...this.#agents.values()].map(state => state.admission)]);
1618
- if (this.#lock) {
1619
- await unlink(join(this.options.dataRoot, 'host.lock'));
1620
- this.#lock = false;
1618
+ await Promise.allSettled([...this.#claims]);
1619
+ if (this.#ownsSessions) {
1620
+ await this.#store.releaseHost(this.#hostId);
1621
+ this.#ownsSessions = false;
1621
1622
  }
1622
1623
  }
1623
1624
  }