kiokuko-dsh 0.1.59 → 0.1.61

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 (62) hide show
  1. package/dist/client.cjs +49 -17
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/dsh/lisp/approval.d.ts +10 -0
  4. package/dist/dsh/lisp/approval.d.ts.map +1 -0
  5. package/dist/dsh/lisp/approval.js +36 -0
  6. package/dist/dsh/lisp/approval.js.map +1 -0
  7. package/dist/dsh/lisp/attachment-input.d.ts +26 -0
  8. package/dist/dsh/lisp/attachment-input.d.ts.map +1 -0
  9. package/dist/dsh/lisp/attachment-input.js +47 -0
  10. package/dist/dsh/lisp/attachment-input.js.map +1 -0
  11. package/dist/dsh/lisp/ci.d.ts +3 -0
  12. package/dist/dsh/lisp/ci.d.ts.map +1 -1
  13. package/dist/dsh/lisp/ci.js +44 -17
  14. package/dist/dsh/lisp/ci.js.map +1 -1
  15. package/dist/dsh/lisp/contracts.d.ts +1 -3
  16. package/dist/dsh/lisp/contracts.d.ts.map +1 -1
  17. package/dist/dsh/lisp/contracts.js +3 -8
  18. package/dist/dsh/lisp/contracts.js.map +1 -1
  19. package/dist/dsh/lisp/files.d.ts +5 -1
  20. package/dist/dsh/lisp/files.d.ts.map +1 -1
  21. package/dist/dsh/lisp/files.js +28 -3
  22. package/dist/dsh/lisp/files.js.map +1 -1
  23. package/dist/dsh/lisp/inspection.d.ts +29 -0
  24. package/dist/dsh/lisp/inspection.d.ts.map +1 -0
  25. package/dist/dsh/lisp/inspection.js +53 -0
  26. package/dist/dsh/lisp/inspection.js.map +1 -0
  27. package/dist/dsh/lisp/manager.d.ts +4 -4
  28. package/dist/dsh/lisp/manager.d.ts.map +1 -1
  29. package/dist/dsh/lisp/manager.js +81 -119
  30. package/dist/dsh/lisp/manager.js.map +1 -1
  31. package/dist/dsh/lisp/model-result.d.ts +5 -0
  32. package/dist/dsh/lisp/model-result.d.ts.map +1 -0
  33. package/dist/dsh/lisp/model-result.js +95 -0
  34. package/dist/dsh/lisp/model-result.js.map +1 -0
  35. package/dist/dsh/lisp/proposal-batch.d.ts +33 -0
  36. package/dist/dsh/lisp/proposal-batch.d.ts.map +1 -0
  37. package/dist/dsh/lisp/proposal-batch.js +137 -0
  38. package/dist/dsh/lisp/proposal-batch.js.map +1 -0
  39. package/dist/dsh/lisp/recorded-result.d.ts +4 -0
  40. package/dist/dsh/lisp/recorded-result.d.ts.map +1 -0
  41. package/dist/dsh/lisp/recorded-result.js +43 -0
  42. package/dist/dsh/lisp/recorded-result.js.map +1 -0
  43. package/dist/dsh/lisp/store.d.ts +6 -0
  44. package/dist/dsh/lisp/store.d.ts.map +1 -1
  45. package/dist/dsh/lisp/store.js +11 -0
  46. package/dist/dsh/lisp/store.js.map +1 -1
  47. package/dist/dsh/lisp/surface.d.ts +2 -1
  48. package/dist/dsh/lisp/surface.d.ts.map +1 -1
  49. package/dist/dsh/lisp/surface.js +39 -13
  50. package/dist/dsh/lisp/surface.js.map +1 -1
  51. package/dist/dsh/lisp/worker.d.ts.map +1 -1
  52. package/dist/dsh/lisp/worker.js +12 -10
  53. package/dist/dsh/lisp/worker.js.map +1 -1
  54. package/dist/dsh/skill-prompts.json +1 -1
  55. package/dist/enno-oduno/schemas.d.ts +10 -10
  56. package/dist/model-tools/contracts.d.ts +2 -2
  57. package/docs/dsh-plugin.md +5 -1
  58. package/docs/lisp.md +60 -4
  59. package/lisp/tools.lisp +10 -4
  60. package/package.json +2 -1
  61. package/skills/kiokuko-lisp/SKILL.md +135 -151
  62. package/skills/kiokuko-soul/SKILL.md +7 -5
package/dist/client.cjs CHANGED
@@ -6,7 +6,7 @@ window.__ModuleLoader__.load({
6
6
  const { createSnapshotStore } = require("@deepseek-ai/dsh-client-store");
7
7
  const { jsx, jsxs, Fragment } = require("react/jsx-runtime");
8
8
  const { useState, useRef, useEffect } = require("react");
9
- const { Modal, Button, IconDownloadOutline16 } = require("@deepseek-ai/dsh-client-ui-primitives");
9
+ const { Modal, Button, IconDownloadOutline16, MarkdownText } = require("@deepseek-ai/dsh-client-ui-primitives");
10
10
  const SESSION_EXPORT_PATH = '/api/session.export';
11
11
  const LOCALE_NAMESPACE = 'kiokuko-session-log-download';
12
12
  const INITIAL_DOWNLOAD_STATE = { bySession: {} };
@@ -19,6 +19,10 @@ window.__ModuleLoader__.load({
19
19
  'dialog.errorTitle': 'Session export failed',
20
20
  'dialog.close': 'Close',
21
21
  'dialog.commandFailed': 'Could not export the Session log.',
22
+ 'review.discuss': 'Chat about it',
23
+ 'review.copy': 'Copy',
24
+ 'review.copied': 'Copied',
25
+ 'review.footnotes': 'Footnotes',
22
26
  };
23
27
  const ja = {
24
28
  'header.action': 'Session log',
@@ -29,6 +33,10 @@ window.__ModuleLoader__.load({
29
33
  'dialog.errorTitle': 'Sessionのエクスポートに失敗',
30
34
  'dialog.close': '閉じる',
31
35
  'dialog.commandFailed': 'Session logをエクスポートできませんでした。',
36
+ 'review.discuss': '相談に戻る',
37
+ 'review.copy': 'コピー',
38
+ 'review.copied': 'コピーしました',
39
+ 'review.footnotes': '脚注',
32
40
  };
33
41
  const zh = {
34
42
  'header.action': 'Session 日志',
@@ -39,6 +47,10 @@ window.__ModuleLoader__.load({
39
47
  'dialog.errorTitle': 'Session 导出失败',
40
48
  'dialog.close': '关闭',
41
49
  'dialog.commandFailed': '无法导出 Session 日志。',
50
+ 'review.discuss': '继续讨论',
51
+ 'review.copy': '复制',
52
+ 'review.copied': '已复制',
53
+ 'review.footnotes': '脚注',
42
54
  };
43
55
  function hostBase() {
44
56
  const origin = globalThis.location?.origin;
@@ -478,10 +490,16 @@ window.__ModuleLoader__.load({
478
490
  }
479
491
  function intakePending(props) {
480
492
  const pending = props.pendingInteraction;
481
- return pending?.kind === 'question' && pending.questions.length === 1
482
- && isSupportedQuestion(pending.questions[0])
483
- && typeof pending.answer === 'function' && typeof pending.cancel === 'function'
484
- ? pending : null;
493
+ if (!pending || pending.questions?.length !== 1 || typeof pending.answer !== 'function' || typeof pending.cancel !== 'function')
494
+ return null;
495
+ const question = pending.questions[0];
496
+ if (!isSupportedQuestion(question))
497
+ return null;
498
+ if (pending.kind === 'question')
499
+ return pending;
500
+ return pending.kind === 'plan-review' && question.intent?.kind === 'plan-review'
501
+ && typeof question.detail === 'string' && question.options.length <= 2
502
+ && question.options.some(option => option.label === question.intent.approve) ? pending : null;
485
503
  }
486
504
  /**
487
505
  * Native pending carrier, plugin-only presentation. The card answers through the
@@ -490,11 +508,24 @@ window.__ModuleLoader__.load({
490
508
  */
491
509
  function IntakeQuestion(props) {
492
510
  const pending = props.matched;
493
- return jsx(IntakeQuestionCard, { key: pending.key, pending });
511
+ const t = props.t;
512
+ return jsx(IntakeQuestionCard, { key: pending.key, pending,
513
+ ...(pending.kind === 'plan-review' ? { reviewCopy: { discuss: t('review.discuss'),
514
+ labels: { code: { copyLabel: t('review.copy'), copiedLabel: t('review.copied') }, footnotes: t('review.footnotes') } } } : {}),
515
+ });
494
516
  }
495
517
  function IntakeQuestionCard(props) {
496
518
  const pending = props.pending;
497
- const question = pending.questions[0];
519
+ const reviewing = pending.kind === 'plan-review';
520
+ const reviewCopy = props.reviewCopy;
521
+ const original = pending.questions[0];
522
+ // The review's first choice cancels back to discussion. Other choices retain
523
+ // the host's exact labels; approval stays last, even if supplied first.
524
+ const question = reviewing ? { ...original, options: [
525
+ { label: reviewCopy.discuss },
526
+ ...original.options.filter(option => option.label !== original.intent.approve),
527
+ ...original.options.filter(option => option.label === original.intent.approve),
528
+ ] } : original;
498
529
  const inputKind = questionInputKind(question);
499
530
  const mac = /Mac|iPhone|iPad|iPod/u.test(globalThis.navigator?.platform ?? '');
500
531
  const userAgent = globalThis.navigator?.userAgent ?? '';
@@ -532,10 +563,10 @@ window.__ModuleLoader__.load({
532
563
  let custom = current.custom.trim();
533
564
  let selected = current.selected;
534
565
  if (!cancel && selected === null && custom === '') {
535
- setError('選択肢を選ぶか、自由入力してください。');
566
+ setError(reviewing ? '選択肢を選んでから確定してください。' : '選択肢を選ぶか、自由入力してください。');
536
567
  return;
537
568
  }
538
- if (!cancel && inputKind === 'choice' && /^[0-90-9]+$/u.test(custom)) {
569
+ if (!cancel && !reviewing && inputKind === 'choice' && /^[0-90-9]+$/u.test(custom)) {
539
570
  const ordinal = Number(custom.normalize('NFKC'));
540
571
  if (ordinal < 1 || ordinal > question.options.length) {
541
572
  setError(`番号は1〜${question.options.length}で入力してください。`);
@@ -548,7 +579,7 @@ window.__ModuleLoader__.load({
548
579
  setBusy(true);
549
580
  setError('');
550
581
  // Enter is a separate confirmation. Typing, key-repeat and IME cannot submit twice.
551
- void Promise.resolve().then(() => cancel ? pending.cancel() : pending.answer({ answers: [{
582
+ void Promise.resolve().then(() => cancel || (reviewing && selected === 0) ? pending.cancel() : pending.answer({ answers: [{
552
583
  id: question.id,
553
584
  selected: selected === null ? [] : [question.options[selected].label],
554
585
  ...(custom ? { custom } : {}),
@@ -591,7 +622,7 @@ window.__ModuleLoader__.load({
591
622
  const keyDown = (event) => {
592
623
  if (selectShortcut(event))
593
624
  return;
594
- if (busy || inFlight.current || event.repeat || event.nativeEvent?.isComposing || event.nativeEvent?.keyCode === 229
625
+ if (busy || inFlight.current || event.repeat || event.isComposing || event.keyCode === 229 || event.nativeEvent?.isComposing || event.nativeEvent?.keyCode === 229
595
626
  || event.ctrlKey || event.altKey || event.metaKey || event.shiftKey)
596
627
  return;
597
628
  const editing = event.target?.isContentEditable || ['INPUT', 'TEXTAREA', 'SELECT'].includes(event.target?.tagName ?? '');
@@ -624,18 +655,19 @@ window.__ModuleLoader__.load({
624
655
  jsxs('header', { children: [jsx('h2', { id: titleId, children: question.question }),
625
656
  jsx('button', { type: 'button', disabled: busy, onClick: () => settle(true), 'aria-label': '質問を閉じる', children: '閉じる' })] }),
626
657
  jsxs('div', { className: 'kiokuko-intake-body', children: [
627
- question.detail ? jsx('p', { children: question.detail }) : null,
658
+ reviewing ? jsx(MarkdownText, { text: question.detail, labels: reviewCopy.labels })
659
+ : question.detail ? jsx('p', { children: question.detail }) : null,
628
660
  jsx('p', { children: question.options.length > 9
629
661
  ? `${shortcutModifier}+1〜9で選択、Enterで確定。10以上は番号(1〜${question.options.length})を数字で続けて入力、Backspaceで訂正できます。`
630
662
  : `${shortcutModifier}+1〜${question.options.length}で選択、Enterで確定。` }),
631
663
  jsx('div', { 'aria-label': '選択肢', children: question.options.map((option, index) => jsxs('button', {
632
- key: option.label, type: 'button', className: 'kiokuko-intake-option', disabled: busy,
664
+ key: index, type: 'button', className: 'kiokuko-intake-option', disabled: busy,
633
665
  ref: (element) => { optionElements.current[index] = element; },
634
666
  'aria-pressed': draft.selected === index,
635
667
  ...(index < 9 ? { 'aria-keyshortcuts': `${question.options.length <= 9 ? `${index + 1} ` : ''}${controlShortcut ? 'Control' : 'Meta'}+${index + 1}` } : {}),
636
668
  onClick: () => update({ selected: index, custom: '' }),
637
669
  onKeyDown: (event) => {
638
- if (event.key !== 'Enter' || event.repeat || event.shiftKey || event.ctrlKey || event.altKey || event.metaKey || event.nativeEvent?.isComposing || event.nativeEvent?.keyCode === 229 || (intakeDrafts.get(pending) ?? draft).selected !== index)
670
+ if (event.key !== 'Enter' || event.repeat || event.shiftKey || event.ctrlKey || event.altKey || event.metaKey || event.isComposing || event.keyCode === 229 || event.nativeEvent?.isComposing || event.nativeEvent?.keyCode === 229 || (intakeDrafts.get(pending) ?? draft).selected !== index)
639
671
  return;
640
672
  event.preventDefault();
641
673
  event.stopPropagation();
@@ -644,12 +676,12 @@ window.__ModuleLoader__.load({
644
676
  children: [jsx('strong', { children: `${index + 1}. ${option.label}` }), option.description ? jsx('span', { children: option.description }) : null,
645
677
  jsx('kbd', { className: 'kiokuko-intake-shortcut', 'aria-hidden': true, children: index < 9 ? `${shortcutModifier}+${index + 1}` : `${index + 1} → Enter` })],
646
678
  })) }),
647
- jsx('label', { htmlFor: `${titleId}-custom`, children: inputKind === 'search' ? '検索(Enterで検索・数字も検索語として入力できます)' : inputKind === 'value' ? '値を入力(Enterで確定)' : '自由入力(任意)' }),
679
+ !reviewing ? jsx('label', { htmlFor: `${titleId}-custom`, children: inputKind === 'search' ? '検索(Enterで検索・数字も検索語として入力できます)' : inputKind === 'value' ? '値を入力(Enterで確定)' : '自由入力(任意)' }) : null,
648
680
  inputKind === 'choice' && question.header === '実行方式とモデル'
649
681
  ? jsx('p', { children: '選択肢に当てはまらない内容はAIに渡し、会話に戻ります。実行方式やモデル構成は確定しません。' }) : null,
650
- jsx('textarea', { id: `${titleId}-custom`, rows: 1, disabled: busy, value: draft.custom,
682
+ !reviewing ? jsx('textarea', { id: `${titleId}-custom`, rows: 1, disabled: busy, value: draft.custom,
651
683
  onChange: (event) => update({ selected: null, custom: event.target.value }),
652
- }),
684
+ }) : null,
653
685
  ] }),
654
686
  jsxs('footer', { children: [
655
687
  jsx('span', { role: 'status', 'aria-live': 'polite', children: error || (busy ? '送信中…' : draft.selected === null ? '' : `${draft.selected + 1}. ${question.options[draft.selected].label}を選択中`) }),
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,UAAU,wBAAwB;IAChC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;QAAE,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;KAAE,CAAC,CAAA;IAC7G,QAAQ,EAAE;QAAE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CACxC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAA;CAC3C;AAYD,UAAU,gBAAgB;IACxB,QAAQ,CAAC,cAAc,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,CAAA;IACxF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAA;KAC3F,CAAA;IACD,QAAQ,CAAC,KAAK,EAAE;QACd,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,GAAG,OAAO,CAAA;QACtD,QAAQ,CACN,UAAU,EAAE;YACV,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;YACrB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;YACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;YACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;YAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;YAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;YACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAChD,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,GACrD,OAAO,CAAA;KACX,CAAA;IACD,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;IAChF,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAA;CACtI;AA0ED,+EAA+E;AAC/E,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC,CAqBjH;AAuHD,eAAO,MAAM,MAAM,gDAAiD,CAAA;AA4ZpE,mEAAmE;AACnE,wBAAgB,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAmCjD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,UAAU,wBAAwB;IAChC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;QAAE,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;KAAE,CAAC,CAAA;IAC7G,QAAQ,EAAE;QAAE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CACxC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAA;CAC3C;AAYD,UAAU,gBAAgB;IACxB,QAAQ,CAAC,cAAc,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,CAAA;IACxF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAA;KAC3F,CAAA;IACD,QAAQ,CAAC,KAAK,EAAE;QACd,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,GAAG,OAAO,CAAA;QACtD,QAAQ,CACN,UAAU,EAAE;YACV,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;YACrB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;YACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;YACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;YAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;YAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;YACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAChD,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,GACrD,OAAO,CAAA;KACX,CAAA;IACD,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;IAChF,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAA;CACtI;AAuFD,+EAA+E;AAC/E,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC,CAqBjH;AAuHD,eAAO,MAAM,MAAM,gDAAiD,CAAA;AA6apE,mEAAmE;AACnE,wBAAgB,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAmCjD"}
@@ -0,0 +1,10 @@
1
+ import type { DshUserQuestions } from '../user-interaction.js';
2
+ export type Approval = {
3
+ approved: true;
4
+ } | {
5
+ approved: false;
6
+ reason: 'declined' | 'cancelled' | 'timed_out' | 'unavailable' | 'invalid_answer';
7
+ };
8
+ /** One concrete review; no timeout, UI failure or free text can grant authority. */
9
+ export declare function confirm(questions: DshUserQuestions | undefined, agentId: string, question: Parameters<DshUserQuestions['ask']>[0]['questions'][0], signal: AbortSignal, timeoutMs?: number): Promise<Approval>;
10
+ //# sourceMappingURL=approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/approval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,CAAA;CAAE,CAAA;AAElJ,oFAAoF;AACpF,wBAAsB,OAAO,CAAC,SAAS,EAAE,gBAAgB,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EACpF,QAAQ,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiB9H"}
@@ -0,0 +1,36 @@
1
+ /** One concrete review; no timeout, UI failure or free text can grant authority. */
2
+ export async function confirm(questions, agentId, question, signal, timeoutMs = 300000) {
3
+ if (signal.aborted)
4
+ return { approved: false, reason: 'cancelled' };
5
+ if (!questions)
6
+ return { approved: false, reason: 'unavailable' };
7
+ const timeout = new AbortController(), combined = AbortSignal.any([signal, timeout.signal]);
8
+ const timer = setTimeout(() => timeout.abort(), timeoutMs);
9
+ let onAbort;
10
+ try {
11
+ const answer = await Promise.race([questions.ask({ agent: { id: agentId }, signal: combined, questions: [question] }),
12
+ new Promise(resolve => { onAbort = () => resolve(undefined); if (combined.aborted)
13
+ onAbort();
14
+ else
15
+ combined.addEventListener('abort', onAbort, { once: true }); })]);
16
+ if (combined.aborted)
17
+ return { approved: false, reason: signal.aborted ? 'cancelled' : 'timed_out' };
18
+ if (!answer)
19
+ return { approved: false, reason: 'unavailable' };
20
+ const response = answer.answers[0];
21
+ if (answer.answers.length !== 1 || response?.id !== question.id || response.custom || response.selected.length !== 1)
22
+ return { approved: false, reason: 'invalid_answer' };
23
+ if (response.selected[0] === question.intent?.approve)
24
+ return { approved: true };
25
+ return { approved: false, reason: response.selected[0] === question.options?.[0]?.label ? 'declined' : 'invalid_answer' };
26
+ }
27
+ catch {
28
+ return { approved: false, reason: signal.aborted ? 'cancelled' : timeout.signal.aborted ? 'timed_out' : 'unavailable' };
29
+ }
30
+ finally {
31
+ clearTimeout(timer);
32
+ if (onAbort)
33
+ combined.removeEventListener('abort', onAbort);
34
+ }
35
+ }
36
+ //# sourceMappingURL=approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../src/dsh/lisp/approval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ interface FileRef {
2
+ attachmentId: string;
3
+ name: string;
4
+ bytes: number;
5
+ }
6
+ export interface LispAttachmentStore {
7
+ fileHostPath?(ref: FileRef): string | undefined;
8
+ readFileStream?(ref: FileRef, signal?: AbortSignal): AsyncIterable<Uint8Array>;
9
+ }
10
+ export interface LispAttachmentSession {
11
+ snapshotEvents?(): readonly unknown[];
12
+ }
13
+ export interface AttachmentInput {
14
+ source: {
15
+ path: string;
16
+ attachmentId: string;
17
+ size: number;
18
+ hash: string;
19
+ };
20
+ size: number;
21
+ read(): Promise<Buffer>;
22
+ }
23
+ /** Only durable user-file parts in this live session confer attachment access. */
24
+ export declare function attachmentInput(session: LispAttachmentSession, store: LispAttachmentStore | undefined, path: string, signal?: AbortSignal): AttachmentInput;
25
+ export {};
26
+ //# sourceMappingURL=attachment-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-input.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/attachment-input.ts"],"names":[],"mappings":"AAGA,UAAU,OAAO;IAAG,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACvE,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;IAC/C,cAAc,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;CAC/E;AACD,MAAM,WAAW,qBAAqB;IAAG,cAAc,CAAC,IAAI,SAAS,OAAO,EAAE,CAAA;CAAE;AAChF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CACxB;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,eAAe,CAmC3J"}
@@ -0,0 +1,47 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { FILE_BYTES, LispError, fail } from './contracts.js';
3
+ /** Only durable user-file parts in this live session confer attachment access. */
4
+ export function attachmentInput(session, store, path, signal) {
5
+ if (!store?.fileHostPath || !store.readFileStream || !session.snapshotEvents) {
6
+ throw new LispError('ATTACHMENT_UNAVAILABLE', 'このホストでは Lisp への添付入力を利用できません。', 'DSH の添付サービスを確認するか、ファイルを作業フォルダに置いて相対パスで指定してください。');
7
+ }
8
+ for (const raw of session.snapshotEvents()) {
9
+ const event = raw;
10
+ if (event?.type !== 'user/message' || event.data?.source?.kind !== 'user' || !Array.isArray(event.data.content))
11
+ continue;
12
+ for (const rawPart of event.data.content) {
13
+ const part = rawPart;
14
+ const ref = part?.attachment;
15
+ if (part?.type !== 'file' || !ref || typeof ref.attachmentId !== 'string' || !/^sha256:[a-f0-9]{64}$/u.test(ref.attachmentId)
16
+ || typeof ref.name !== 'string' || !Number.isSafeInteger(ref.bytes) || ref.bytes < 0)
17
+ continue;
18
+ const file = { attachmentId: ref.attachmentId, name: ref.name, bytes: ref.bytes };
19
+ if (store.fileHostPath(file) !== path)
20
+ continue;
21
+ if (file.bytes > FILE_BYTES)
22
+ fail('FILE_LIMIT', '添付入力は 64 MiB 以下のファイルに限ります。');
23
+ const hash = file.attachmentId.slice(7);
24
+ return { source: { path, attachmentId: file.attachmentId, size: file.bytes, hash }, size: file.bytes,
25
+ read: async () => {
26
+ signal?.throwIfAborted();
27
+ const chunks = [], digest = createHash('sha256');
28
+ let size = 0;
29
+ for await (const chunk of store.readFileStream(file, signal)) {
30
+ signal?.throwIfAborted();
31
+ size += chunk.byteLength;
32
+ if (size > file.bytes || size > FILE_BYTES)
33
+ fail('ATTACHMENT_CHANGED', '添付ファイルの容量が記録と一致しません。');
34
+ const copy = Buffer.from(chunk);
35
+ chunks.push(copy);
36
+ digest.update(copy);
37
+ }
38
+ signal?.throwIfAborted();
39
+ if (size !== file.bytes || digest.digest('hex') !== hash)
40
+ fail('ATTACHMENT_CHANGED', '添付ファイルの内容が記録と一致しません。');
41
+ return Buffer.concat(chunks, size);
42
+ } };
43
+ }
44
+ }
45
+ throw new LispError('ATTACHMENT_NOT_IN_SESSION', 'このセッションに添付されたファイルのパスではありません。', 'このセッションの添付パス、または作業フォルダ内の相対パスを inputs に指定してください。');
46
+ }
47
+ //# sourceMappingURL=attachment-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-input.js","sourceRoot":"","sources":["../../../src/dsh/lisp/attachment-input.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export type LispCiRequest = {
9
9
  } | {
10
10
  kind: 'verify';
11
11
  target: keyof typeof VERIFIERS;
12
+ script?: string | undefined;
12
13
  };
13
14
  interface CommandResult {
14
15
  code: number;
@@ -52,6 +53,8 @@ declare const VERIFIERS: {
52
53
  readonly timeoutMs: 60000;
53
54
  };
54
55
  };
56
+ /** Discovery is read-only; missing scripts never need a model-driven trial run. */
57
+ export declare function describeVerifiers(owner: LispOwner): Promise<unknown>;
55
58
  /** Host-only CI adapter. Credentials remain in the host child process and are never copied into the Lisp worker. */
56
59
  export declare function createLispCiAdapter(questions?: DshUserQuestions, runner?: CommandRunner): (owner: LispOwner, request: LispCiRequest, signal: AbortSignal) => Promise<unknown>;
57
60
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/ci.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAEhE,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,OAAO,SAAS,CAAA;CAAE,CAAA;AAEtD,UAAU,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACxE,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AAG/I,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOL,CAAA;AA0CV,oHAAoH;AACpH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,MAAM,GAAE,aAA0B,IACpF,OAAO,SAAS,EAAE,SAAS,aAAa,EAAE,QAAQ,WAAW,KAAG,OAAO,CAAC,OAAO,CAAC,CAiB/F"}
1
+ {"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/ci.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAIxE,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,OAAO,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAEnF,UAAU,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACxE,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AAG/I,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOL,CAAA;AA0CV,mFAAmF;AACnF,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAM1E;AAED,oHAAoH;AACpH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,MAAM,GAAE,aAA0B,IACpF,OAAO,SAAS,EAAE,SAAS,aAAa,EAAE,QAAQ,WAAW,KAAG,OAAO,CAAC,OAAO,CAAC,CA8B/F"}
@@ -3,7 +3,9 @@ import { randomUUID } from 'node:crypto';
3
3
  import { access, realpath } from 'node:fs/promises';
4
4
  import { constants } from 'node:fs';
5
5
  import { delimiter, join, relative } from 'node:path';
6
- import { LispError, fail } from './contracts.js';
6
+ import { LispError, fail, digest } from './contracts.js';
7
+ import { checkedBytes, snapshot } from './files.js';
8
+ import { confirm } from './approval.js';
7
9
  const OUTPUT_LIMIT = 1024 * 1024;
8
10
  const VERIFIERS = {
9
11
  typecheck: { file: 'npm', args: ['run', 'typecheck'], timeoutMs: 120_000 },
@@ -42,22 +44,32 @@ const runCommand = async (file, args, options) => {
42
44
  });
43
45
  });
44
46
  };
45
- async function approveVerifier(questions, owner, target, command, signal) {
46
- if (!questions || signal.aborted)
47
- return false;
48
- const id = `lisp-ci-${randomUUID()}`;
49
- const label = 'この検証を実行';
47
+ async function scriptsFor(owner) {
48
+ const file = await snapshot(owner.root, 'package.json', []);
49
+ if (!file.exists)
50
+ return {};
51
+ if (file.size > 1024 * 1024)
52
+ throw new LispError('PACKAGE_INVALID', 'package.json が大きすぎます。', 'package.json を確認してください。');
53
+ let parsed;
50
54
  try {
51
- const answer = await questions.ask({ agent: { id: owner.agentId }, signal, questions: [{
52
- id, header: 'Lisp · 検証実行の確認', question: `${target} を実行しますか?`,
53
- detail: `実行: ${command.file} ${command.args.join(' ')}\n作業ディレクトリ: ${owner.root}\nタイムアウト: ${command.timeoutMs} ms\nテスト・ビルド成果物が作業ディレクトリに作成される場合があります。拒否・取消・無回答では実行しません。`,
54
- options: [{ label: '実行しない' }, { label }], intent: { kind: 'plan-review', approve: label },
55
- }] });
56
- return !signal.aborted && answer.answers.length === 1 && answer.answers[0]?.id === id && !answer.answers[0].custom && answer.answers[0].selected.length === 1 && answer.answers[0].selected[0] === label;
55
+ parsed = JSON.parse((await checkedBytes(file)).toString('utf8'));
57
56
  }
58
57
  catch {
59
- return false;
58
+ throw new LispError('PACKAGE_INVALID', 'package.json を読み取れません。', 'package.json のJSONを修正してください。');
60
59
  }
60
+ const scripts = parsed && typeof parsed === 'object' && 'scripts' in parsed ? parsed.scripts : undefined;
61
+ if (!scripts || typeof scripts !== 'object' || Array.isArray(scripts))
62
+ return {};
63
+ return Object.fromEntries(Object.entries(scripts).filter(([, value]) => typeof value === 'string' && value.trim()));
64
+ }
65
+ const scriptFor = (target, scripts, selected) => selected ?? (target === 'test' ? 'test' : target === 'typecheck' && !Object.hasOwn(scripts, 'typecheck') && Object.hasOwn(scripts, 'check') ? 'check' : VERIFIERS[target].args[1]);
66
+ /** Discovery is read-only; missing scripts never need a model-driven trial run. */
67
+ export async function describeVerifiers(owner) {
68
+ const scripts = await scriptsFor(owner);
69
+ return Object.fromEntries(Object.keys(VERIFIERS).map(key => {
70
+ const target = key, script = scriptFor(target, scripts);
71
+ return [target, { script, available: Object.hasOwn(scripts, script), ...(target === 'test' ? { focused: Object.keys(scripts).filter(key => /^test(?::[A-Za-z0-9._-]+)*$/u.test(key)) } : {}) }];
72
+ }));
61
73
  }
62
74
  /** Host-only CI adapter. Credentials remain in the host child process and are never copied into the Lisp worker. */
63
75
  export function createLispCiAdapter(questions, runner = runCommand) {
@@ -79,11 +91,26 @@ export function createLispCiAdapter(questions, runner = runCommand) {
79
91
  fail('CI_COMMAND_FAILED', result.stderr || 'GitHub CI の失敗ログを取得できませんでした。');
80
92
  return { source: 'github', repositoryRoot: owner.root, runId: request.runId, log: result.stdout };
81
93
  }
82
- const command = VERIFIERS[request.target];
83
- if (!await approveVerifier(questions, owner, request.target, command, signal))
84
- return { target: request.target, state: 'NOT_APPLIED' };
94
+ const scripts = await scriptsFor(owner);
95
+ if (request.script !== undefined && (request.target !== 'test' || !/^test(?::[A-Za-z0-9._-]+)*$/u.test(request.script))) {
96
+ return { target: request.target, state: 'NOT_APPLIED', code: 'INVALID_TEST_SCRIPT', reason: 'invalid_input', message: 'script は test 対象の test または test:* のみ指定できます。' };
97
+ }
98
+ const script = scriptFor(request.target, scripts, request.script);
99
+ if (!Object.hasOwn(scripts, script))
100
+ return { target: request.target, state: 'NOT_APPLIED', code: 'SCRIPT_MISSING', reason: 'script_missing', script,
101
+ message: `package.json に ${script} がありません。実行・確認はしていません。`, availableScripts: Object.keys(scripts) };
102
+ const command = { ...VERIFIERS[request.target], args: script === 'test' ? ['test'] : ['run', script] };
103
+ const approval = await confirm(questions, owner.agentId, {
104
+ id: `lisp-ci-${randomUUID()}`, header: 'Lisp · 検証実行の確認', question: `${script} を実行しますか?`,
105
+ detail: `実行: ${command.file} ${command.args.join(' ')}\nスクリプト: ${scripts[script]}\n作業ディレクトリ: ${owner.root}\nタイムアウト: ${command.timeoutMs} ms\nテスト・ビルド成果物が作成される場合があります。`,
106
+ options: [{ label: '実行しない' }, { label: 'この検証を実行' }], intent: { kind: 'plan-review', approve: 'この検証を実行' },
107
+ }, signal);
108
+ if (!approval.approved)
109
+ return { target: request.target, script, state: 'NOT_APPLIED', reason: approval.reason };
110
+ if (digest(scripts) !== digest(await scriptsFor(owner)))
111
+ return { target: request.target, script, state: 'NOT_APPLIED', code: 'TARGET_CHANGED', reason: 'scripts_changed', message: '確認中にnpmスクリプトが変わりました。実行していません。' };
85
112
  const result = await runner(command.file, [...command.args], { cwd: owner.root, timeoutMs: command.timeoutMs, signal });
86
- return { target: request.target, state: result.code === 0 ? 'SUCCEEDED' : 'FAILED', ...result };
113
+ return { target: request.target, script, state: result.code === 0 ? 'SUCCEEDED' : 'FAILED', ...result };
87
114
  };
88
115
  }
89
116
  //# sourceMappingURL=ci.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../src/dsh/lisp/ci.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../src/dsh/lisp/ci.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export declare const LISP_TOOLS: readonly ["lisp_eval", "lisp_describe", "lisp_i
12
12
  export type LispTool = typeof LISP_TOOLS[number];
13
13
  export declare const FRAME_BYTES = 1048576;
14
14
  export declare const FILE_BYTES: number;
15
- export declare const RESULT_BYTES: number;
15
+ export { RESULT_BYTES, renderResult } from './model-result.js';
16
16
  export declare const identifier: z.ZodString;
17
17
  export interface LispOwner {
18
18
  sessionId: string;
@@ -26,8 +26,6 @@ export declare class LispError extends Error {
26
26
  constructor(code: string, message: string, recovery?: string);
27
27
  }
28
28
  export declare function digest(value: unknown): string;
29
- /** Preserve valid JSON and UTF-8 even when the complete result is too large. */
30
- export declare function renderResult(value: unknown): string;
31
29
  export declare function fail(code: string, message: string): never;
32
30
  export declare function failure(error: unknown): {
33
31
  ok: false;
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/contracts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,UAAU;;;;;;;kBAMZ,CAAA;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AAC1D,eAAO,MAAM,UAAU,qGAAsG,CAAA;AAC7H,MAAM,MAAM,QAAQ,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;AAChD,eAAO,MAAM,WAAW,UAAY,CAAA;AACpC,eAAO,MAAM,UAAU,QAAmB,CAAA;AAC1C,eAAO,MAAM,YAAY,QAAY,CAAA;AACrC,eAAO,MAAM,UAAU,aAA0D,CAAA;AACjF,MAAM,WAAW,SAAS;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC/E,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,mBAAmB,GAAG,kBAAkB,CAAA;AACjI,qBAAa,SAAU,SAAQ,KAAK;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAmB,QAAQ,CAAC,QAAQ;gBAAhD,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAW,QAAQ,SAAqC;CAC3G;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK7C;AACD,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAInD;AACD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAuC;AACjG,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAGtG;AACD,eAAO,MAAM,SAAS;;;;kBACyD,CAAA;AAC/E,eAAO,MAAM,eAAe;;;;;;;iCAG1B,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC3D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;4BAGtB,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/contracts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,UAAU;;;;;;;kBAMZ,CAAA;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AAC1D,eAAO,MAAM,UAAU,qGAAsG,CAAA;AAC7H,MAAM,MAAM,QAAQ,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;AAChD,eAAO,MAAM,WAAW,UAAY,CAAA;AACpC,eAAO,MAAM,UAAU,QAAmB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC9D,eAAO,MAAM,UAAU,aAA0D,CAAA;AACjF,MAAM,WAAW,SAAS;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC/E,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,mBAAmB,GAAG,kBAAkB,CAAA;AACjI,qBAAa,SAAU,SAAQ,KAAK;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAmB,QAAQ,CAAC,QAAQ;gBAAhD,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAW,QAAQ,SAAqC;CAC3G;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK7C;AACD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAuC;AACjG,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAItG;AACD,eAAO,MAAM,SAAS;;;;kBACyD,CAAA;AAC/E,eAAO,MAAM,eAAe;;;;;;;iCAG1B,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC3D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;4BAGtB,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA"}
@@ -10,7 +10,7 @@ export const LispConfig = z.object({
10
10
  export const LISP_TOOLS = ['lisp_eval', 'lisp_describe', 'lisp_inspect', 'lisp_status', 'lisp_cancel', 'lisp_reset'];
11
11
  export const FRAME_BYTES = 1_048_576;
12
12
  export const FILE_BYTES = 64 * 1024 * 1024;
13
- export const RESULT_BYTES = 64 * 1024;
13
+ export { RESULT_BYTES, renderResult } from './model-result.js';
14
14
  export const identifier = z.string().min(1).max(256).regex(/^[^\p{Cc}\p{Cf}]+$/u);
15
15
  export class LispError extends Error {
16
16
  code;
@@ -29,15 +29,10 @@ export function digest(value) {
29
29
  return item;
30
30
  })).digest('hex');
31
31
  }
32
- /** Preserve valid JSON and UTF-8 even when the complete result is too large. */
33
- export function renderResult(value) {
34
- const json = JSON.stringify(value);
35
- if (Buffer.byteLength(json) <= RESULT_BYTES)
36
- return json;
37
- return JSON.stringify({ truncated: true, message: '応答が表示上限を超えました。lisp_status または /kioku-lisp diagnostics で操作 ID を確認してください。', preview: Buffer.from(json).subarray(0, 12000).toString('utf8') });
38
- }
39
32
  export function fail(code, message) { throw new LispError(code, message); }
40
33
  export function failure(error) {
34
+ if (error instanceof z.ZodError)
35
+ return { ok: false, code: 'INVALID_INPUT', message: error.issues.map(issue => `${issue.path.join('.')}: ${issue.message}`).join('\n').slice(0, 1000), recovery: '指定した引数を修正してください。Lisp の復旧は不要です。' };
41
36
  return error instanceof LispError ? { ok: false, code: error.code, message: error.message, recovery: error.recovery }
42
37
  : { ok: false, code: 'LISP_INTERNAL_ERROR', message: error instanceof Error ? error.message.slice(0, 1000) : 'Lisp 処理に失敗しました。', recovery: '/kioku-lisp status で確認し、/kioku-lisp recover で照合してください。自動再実行はしません。' };
43
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/dsh/lisp/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/dsh/lisp/contracts.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,10 @@ export interface FrozenChange {
23
23
  size: number;
24
24
  };
25
25
  }
26
+ export type CreatedParents = Map<string, {
27
+ dev: number;
28
+ ino: number;
29
+ }>;
26
30
  export declare function under(root: string, path: string): boolean;
27
31
  /** Resolve every directory without following links; no directory deletion is exposed. */
28
32
  export declare function snapshot(root: string, path: string, protectedRoots: readonly string[]): Promise<FileSnapshot>;
@@ -30,7 +34,7 @@ export declare function sameFile(a: FileSnapshot, b: FileSnapshot): boolean;
30
34
  export declare function checkedBytes(before: FileSnapshot): Promise<Buffer>;
31
35
  export declare function freezeChange(owner: LispOwner, request: ProposalInput, backupRoot: string, protectedRoots: readonly string[]): Promise<FrozenChange>;
32
36
  /** Backups are independent copies. Never replay this function after an uncertain outcome. */
33
- export declare function applyChange(owner: LispOwner, change: FrozenChange, protectedRoots: readonly string[]): Promise<void>;
37
+ export declare function applyChange(owner: LispOwner, change: FrozenChange, protectedRoots: readonly string[], createdParents?: CreatedParents): Promise<void>;
34
38
  export declare function backupUsage(root: string): Promise<number>;
35
39
  export declare function restoreBytes(source: NonNullable<FrozenChange['restoration']>): Promise<Buffer>;
36
40
  //# sourceMappingURL=files.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/files.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAErF,MAAM,WAAW,YAAY;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE;AACzN,MAAM,WAAW,YAAY;IAAG,OAAO,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AAE7K,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAkI;AAE5L,yFAAyF;AACzF,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAkCnH;AACD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO,CAElE;AACD,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CASxE;AAQD,wBAAsB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAKzJ;AACD,6FAA6F;AAC7F,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB1H;AACD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ/D;AACD,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CASpG"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/dsh/lisp/files.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAErF,MAAM,WAAW,YAAY;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE;AACzN,MAAM,WAAW,YAAY;IAAG,OAAO,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AAC7K,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAEtE,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAkI;AAE5L,yFAAyF;AACzF,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAkCnH;AACD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO,CAElE;AACD,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CASxE;AAQD,wBAAsB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAKzJ;AACD,6FAA6F;AAC7F,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,EAAE,cAAc,GAAE,cAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CtK;AACD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ/D;AACD,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CASpG"}