@tocca-systems/twp-cli 0.93.0 → 0.94.1

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 (36) hide show
  1. package/CHANGELOG.public.md +8 -0
  2. package/README.md +21 -4
  3. package/dist/{agent-loop-HMSOMXFI.js → agent-loop-ED3PVMVI.js} +1 -1
  4. package/dist/{api-command-W5NBP6LO.js → api-command-JCHG6Z7G.js} +1 -1
  5. package/dist/{app-ATZXNSKN.js → app-W3MKOXGY.js} +3 -3
  6. package/dist/{chunk-VRRDGI2I.js → chunk-2J5A4Q7U.js} +8 -7
  7. package/dist/{chunk-XIAZ6ZJG.js → chunk-3TDGVH3E.js} +1 -1
  8. package/dist/{chunk-7T5CEF6J.js → chunk-42XM4ZF6.js} +1 -1
  9. package/dist/chunk-5YJSWKQG.js +18 -0
  10. package/dist/chunk-C7MCP63I.js +51 -0
  11. package/dist/{chunk-MSZWJ24L.js → chunk-DJCPPFTI.js} +3 -3
  12. package/dist/{chunk-6EQLA56A.js → chunk-INS77QHY.js} +1 -1
  13. package/dist/{settings-command-TEVH2MNY.js → chunk-MTK4WY54.js} +12 -11
  14. package/dist/chunk-NJL3H2BB.js +7 -0
  15. package/dist/chunk-QBUVJBZ2.js +13 -0
  16. package/dist/cli.js +19 -12
  17. package/dist/{commands-A3RLFXMI.js → commands-G3KAD2J7.js} +1 -1
  18. package/dist/{commands-QNVPMZDX.js → commands-VUDISST6.js} +30 -27
  19. package/dist/{completion-YB2UIXEL.js → completion-INVEPDAF.js} +6 -5
  20. package/dist/{dispatch-GSBMRWQ4.js → dispatch-ZRC3TVFT.js} +1 -1
  21. package/dist/{license-YOBNOTSR.js → license-S35KLEJW.js} +1 -1
  22. package/dist/{logout-guard-HUCILXP7.js → logout-guard-PEETWT4A.js} +1 -1
  23. package/dist/{media-SE6FZLQG.js → media-FNQUGMR5.js} +1 -1
  24. package/dist/orientation-command-PQ3QXDPE.js +25 -0
  25. package/dist/{plan-submit-3LCM44YE.js → plan-submit-7724A3OV.js} +1 -1
  26. package/dist/{registry-PJBXIHUK.js → registry-LSCY5JIU.js} +1 -1
  27. package/dist/{run-DHHIH5A3.js → run-6LVGXIBB.js} +1 -1
  28. package/dist/server-settings-DR3KPUCD.js +4 -0
  29. package/dist/settings-command-3SLINN5N.js +3 -0
  30. package/dist/{setup-FX2IUBHT.js → setup-ICJPTYKW.js} +1 -1
  31. package/dist/{user-PWZUOZGI.js → user-Y244LJW3.js} +6 -6
  32. package/package.json +1 -1
  33. package/dist/chunk-EOXTDZTA.js +0 -13
  34. package/dist/chunk-HPBAAKJS.js +0 -49
  35. package/dist/chunk-ISLZWSHN.js +0 -17
  36. package/dist/server-settings-TFVXMOJB.js +0 -4
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __twpCreateRequire } from 'node:module';
3
3
  const require = __twpCreateRequire(import.meta.url);
4
- import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-HPBAAKJS.js";import"./chunk-2LOT54OO.js";import"./chunk-X3F7DOP5.js";import"./chunk-EOXTDZTA.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.93.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
4
+ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-C7MCP63I.js";import"./chunk-2LOT54OO.js";import"./chunk-NJL3H2BB.js";import"./chunk-X3F7DOP5.js";import"./chunk-QBUVJBZ2.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.94.1":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
5
5
 
6
6
  \u4F7F\u3044\u65B9:
7
7
  twp \u5BFE\u8A71 TUI \u3092\u8D77\u52D5
@@ -94,13 +94,20 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
94
94
  \u6848\u5185\u3055\u308C\u308B --yes --revision <N> \u3067\u78BA\u5B9A\u3002\u623B\u3059\u64CD\u4F5C\u3082\u65B0\u3057\u3044\u7248\u306B\u306A\u308B\uFF09\u3002
95
95
  charter revert \u306F\u61B2\u7AE0\u3060\u3051\u3092\u623B\u3059
96
96
  twp task-loop settings pull --project <\u30AD\u30FC|UUID> [--out <\u30D1\u30B9>]
97
- \u61B2\u7AE0\u4EE5\u5916\u306E\u30EB\u30FC\u30D7\u8A2D\u5B9A\uFF08ai / prompts / loop / outcomes\uFF09\u3092 JSON \u3078\u5C55\u958B
97
+ \u61B2\u7AE0\u4EE5\u5916\u306E\u30EB\u30FC\u30D7\u8A2D\u5B9A\uFF08ai / prompts / loop / outcomes / orientation\uFF09\u3092 JSON \u3078\u5C55\u958B
98
98
  \uFF08\u65E2\u5B9A loop-settings.json\u30FB\u672A\u8A2D\u5B9A\u306E\u30AD\u30FC\u306F null \u3067\u5168\u90E8\u51FA\u3059\uFF09\u3002
99
99
  \u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3068\u9055\u3046\u3068\u304D\u306F\u5DEE\u5206\u3092\u8868\u793A\u3057\u3001--yes \u3067\u4E0A\u66F8\u304D
100
100
  twp task-loop settings push --project <\u30AD\u30FC|UUID> --file <\u30D1\u30B9>
101
101
  \u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u3044\u305F\u30AD\u30FC\u3060\u3051\u3092\u30B5\u30FC\u30D0\u3078\u53CD\u6620\uFF08\u90E8\u5206\u66F4\u65B0\u3002\u66F8\u3044\u3066\u3044\u306A\u3044\u30AD\u30FC\u3068
102
102
  \u61B2\u7AE0\u306F\u5909\u3048\u306A\u3044\u30FBnull \u306F\u672A\u8A2D\u5B9A\u306B\u623B\u3059\u30FBprompts.charter \u306F charter push\uFF09\u3002
103
103
  \u30AD\u30FC\u3054\u3068\u306E\u5DEE\u5206\u3068 revision \u3092\u8868\u793A\u3057\u3066\u6B62\u307E\u308A\u3001--yes --revision <N> \u3067\u78BA\u5B9A
104
+ twp task-loop orientation show|on|off --project <\u30AD\u30FC|UUID>
105
+ twp task-loop orientation set <key> <0-100> --project <\u30AD\u30FC|UUID>
106
+ twp task-loop orientation add <key> <\u30E9\u30D9\u30EB> <0-100> [\u8AAC\u660E] --project <\u30AD\u30FC|UUID>
107
+ twp task-loop orientation remove <key> --project <\u30AD\u30FC|UUID>
108
+ \u8A08\u753BAI\u3078\u6E21\u3059\u5FD7\u5411\u6027\uFF08\u8EF8\u3054\u3068\u306E\u91CD\u307F 0\u301C100\uFF09\u306E\u8868\u793A\u30FB\u5909\u66F4\u3002off \u306F\u8EF8\u3068\u5024\u3092
109
+ \u4FDD\u6301\u3057\u305F\u307E\u307E\u8A08\u753BAI\u3078\u6E21\u3055\u306A\u3044\uFF08on \u3067\u5143\u306E\u5024\u306B\u623B\u308B\uFF09\u3002\u5909\u66F4\u524D\u5F8C\u3068 revision \u3092
110
+ \u8868\u793A\u3057\u3066\u6B62\u307E\u308A\u3001--yes [--revision <N>] \u3067\u78BA\u5B9A
104
111
  twp task-loop plan submit --file <\u30D1\u30B9|-> | --empty [--check]
105
112
  \u8A08\u753BAI\u304C\u8A08\u753B\u3092\u30EB\u30FC\u30D7\u3078\u63D0\u51FA\u3059\u308B\uFF08\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u306E\u4E2D\u3067\u3060\u3051\u53D7\u3051\u4ED8\u3051\u308B\uFF09\u3002
106
113
  step \u3054\u3068\u306B\u53D7\u7406/\u68C4\u5374\u3068\u7406\u7531\u3092\u8868\u793A\u3057\u3001\u68C4\u5374\u304C\u3042\u308C\u3070\u975E0\u3067\u7D42\u308F\u308B\u3002
@@ -1521,16 +1528,16 @@ TUI \u5185:
1521
1528
  TWP API \u3092\u547C\u3079\u307E\u3059\u3002TWP API \u306E\u30C4\u30FC\u30EB\u306F\u65E2\u5B9A\u3067\u78BA\u8A8D\u304C\u51FA\u307E\u3059\uFF08-p \u3067\u306F\u62D2\u5426\u3002--allowed-tools \u3067\u540D\u524D\u3092\u8A31\u53EF\uFF09\u3002
1522
1529
  \u4F1A\u8A71\u30FB\u30ED\u30FC\u30AB\u30EB\u30C4\u30FC\u30EB\uFF08\u30D5\u30A1\u30A4\u30EB\u30FB\u30B3\u30DE\u30F3\u30C9\u30FBgit\uFF09\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u3067\u5B9F\u969B\u306B\u52D5\u304D\u307E\u3059\u3002
1523
1530
  `;function ignoreEpipe(stream){stream.on("error",err=>{if(err.code==="EPIPE")process.exit(0);throw err})}async function main(){const nodeMajor=Number(process.versions.node.split(".")[0]);if(nodeMajor<22){process.stderr.write(`twp-cli \u306B\u306F Node.js 22 \u4EE5\u4E0A\u304C\u5FC5\u8981\u3067\u3059\uFF08\u73FE\u5728: ${process.versions.node}\uFF09
1524
- `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-XT4VB4LJ.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-YB2UIXEL.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1525
- const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-PJBXIHUK.js"),import("./config-XYWRBIC6.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-FXXQHBV5.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-DONZ3M6N.js");process.exitCode=
1531
+ `);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-XT4VB4LJ.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-INVEPDAF.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
1532
+ const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-LSCY5JIU.js"),import("./config-XYWRBIC6.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-FXXQHBV5.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-DONZ3M6N.js");process.exitCode=
1526
1533
  await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
1527
- `);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.movedCommand!==void 0){const{MOVED_QUEUE_COMMAND_MESSAGE}=await import("./dispatch-GSBMRWQ4.js");process.stderr.write(MOVED_QUEUE_COMMAND_MESSAGE);process.exitCode=2;return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
1534
+ `);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.movedCommand!==void 0){const{MOVED_QUEUE_COMMAND_MESSAGE}=await import("./dispatch-ZRC3TVFT.js");process.stderr.write(MOVED_QUEUE_COMMAND_MESSAGE);process.exitCode=2;return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
1528
1535
 
1529
- ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-FXXQHBV5.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-DHHIH5A3.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1530
- {},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-W5NBP6LO.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1531
- profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-5NJSC26F.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-A3RLFXMI.js");
1532
- const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-QNVPMZDX.js");process.exitCode=await runTaskLoop(
1536
+ ${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-FXXQHBV5.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-6LVGXIBB.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
1537
+ {},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-JCHG6Z7G.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
1538
+ profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-5NJSC26F.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-G3KAD2J7.js");
1539
+ const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-VUDISST6.js");process.exitCode=await runTaskLoop(
1533
1540
  {action:args.taskLoopAction??"run",project:args.project,profile:args.profile,safe:args.safe,daemon:args.daemon,interval:args.interval,maxCycles:args.maxCycles,forceRunner:args.forceRunner,force:args.stopForce,drain:args.stopDrain,engine:args.engine,version:VERSION,verbose:args.verbose,scheduleNow:args.scheduleNow,scheduleCounts:args.scheduleCounts,scheduleGate:args.scheduleGate,scheduleOp:args.scheduleOp,scheduleConfigOp:args.scheduleConfigOp,scheduleId:args.scheduleId,charterOp:args.charterOp,charterInput:args.
1534
- charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,settingsOp:args.settingsOp,skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,skillConfig:args.skillConfig,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,includeStopped:args.includeStopped,runnerOp:args.runnerOp,runnerId:args.runnerTargetId,planEmpty:args.planEmpty,planCheck:args.planCheck,
1535
- yes:args.yes,ais:args.ais,workspace:args.workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-2V5GL6OA.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:
1536
- {},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-ATZXNSKN.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
1541
+ charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,settingsOp:args.settingsOp,orientationOp:args.orientationOp,orientationArgs:args.orientationArgs,skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,skillConfig:args.skillConfig,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,includeStopped:args.includeStopped,runnerOp:args.runnerOp,runnerId:args.
1542
+ runnerTargetId,planEmpty:args.planEmpty,planCheck:args.planCheck,yes:args.yes,ais:args.ais,workspace:args.workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-2V5GL6OA.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.
1543
+ disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}const{startTui}=await import("./app-W3MKOXGY.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
@@ -50,7 +50,7 @@ ${err.hint?`${err.hint}
50
50
  `);return 1}writeErr(`\u30A8\u30E9\u30FC: ${err.message}
51
51
  `);return 1}}async function runLogin(options){return run(async()=>{const profile=resolveProfile(options.profile);const io=makeIo(options.cliVersion);if(options.method==="password"){await passwordLogin(profile,{tenantCode:options.tenant??void 0},process.env,io)}else if(options.method==="token"){await tokenLogin(profile,process.env,io)}else{await browserLogin(profile,process.env,io,{noBrowser:options.noBrowser})}})}async function runLogout(options){return run(async()=>{const profile=resolveProfile(
52
52
  options.profile);const creds=loadCredentials(profile.name);if(!creds){writeOut(`\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u300C${profile.name}\u300D\u306F\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093\u3002
53
- `);return}const{describeLogoutImpact,findLoopsUsingProfile}=await import("./logout-guard-HUCILXP7.js");const found=findLoopsUsingProfile(profile.name,options.logoutGuard);if(found.users.length>0||found.undetermined.length>0){writeErr(describeLogoutImpact(profile.name,found,options.force===true));if(options.force!==true)throw new LogoutRefusedError}const apiUrl=effectiveApiUrl(profile,creds.api_url);const revoked=await httpFetch(`${apiUrl}/api/v2/auth/logout`,{method:"POST",headers:{Accept:"applic\
53
+ `);return}const{describeLogoutImpact,findLoopsUsingProfile}=await import("./logout-guard-PEETWT4A.js");const found=findLoopsUsingProfile(profile.name,options.logoutGuard);if(found.users.length>0||found.undetermined.length>0){writeErr(describeLogoutImpact(profile.name,found,options.force===true));if(options.force!==true)throw new LogoutRefusedError}const apiUrl=effectiveApiUrl(profile,creds.api_url);const revoked=await httpFetch(`${apiUrl}/api/v2/auth/logout`,{method:"POST",headers:{Accept:"applic\
54
54
  ation/json",Authorization:`Bearer ${creds.token}`}}).then(res=>res.ok,()=>false);await deleteCredentials(profile.name);writeOut(`\u2705 \u30ED\u30B0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F\uFF08\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB: ${profile.name} / \u30C8\u30FC\u30AF\u30F3: ${maskToken(creds.token)}\uFF09
55
55
  `);if(!revoked){writeOut("\u26A0 \u30B5\u30FC\u30D0\u5074\u306E\u30C8\u30FC\u30AF\u30F3\u5931\u52B9\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u7B49\uFF09\u3002TWP \u306E\u300C\u8A2D\u5B9A > CLI\u7AEF\u672B\u300D\u304B\u3089\u3082\u5931\u52B9\u3067\u304D\u307E\u3059\u3002\n")}})}async function runWhoami(options){return run(async()=>{const profile=resolveProfile(options.profile);const structured=options.output!==void 0||options.query!==void 0;let format=null;if(structured){
56
56
  const{resolveOutputFormat,OUTPUT_FORMATS}=await import("./format-F6PPBPY5.js");format=resolveOutputFormat({...options.output!==void 0?{flag:options.output}:{},isTty:process.stdout.isTTY===true});if(format===null){throw new UsageError(`--output \u306B\u300C${options.output??""}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${OUTPUT_FORMATS.join(" / ")} \u3067\u3059`)}}const stored=loadCredentials(profile.name);const apiUrl=effectiveApiUrl(
@@ -1,12 +1,12 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-6M5NUVJJ.js";import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import{LoopSettingsApplier,renderStepBudget}from"./chunk-ISLZWSHN.js";import{NO_PLAN_SESSION,RECENT_ADVANCE_WINDOW_HOURS,buildDynamicBlocks,buildRecentCandidateIndex,createItem,enqueueBlockerRecovery,enqueueDevVerifyForMerged,enqueueReleasePartialMergeRerun,enqueueReleasePhase5Recovery,
4
- fileSkillNames,findRecentCandidate,formatInflightEntry,formatPlanResultLine,formatRecentAdvance,formatResumeHold,inflightEntries,inflightStaleHours,openPlanSession,parseOutcomeCode,parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,resolveResumeHold,shouldSuppressForResume,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-7T5CEF6J.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,
3
+ import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-6M5NUVJJ.js";import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import{LoopSettingsApplier,renderStepBudget}from"./chunk-5YJSWKQG.js";import{NO_PLAN_SESSION,RECENT_ADVANCE_WINDOW_HOURS,buildDynamicBlocks,buildRecentCandidateIndex,createItem,enqueueBlockerRecovery,enqueueDevVerifyForMerged,enqueueReleasePartialMergeRerun,enqueueReleasePhase5Recovery,
4
+ fileSkillNames,findRecentCandidate,formatInflightEntry,formatPlanResultLine,formatRecentAdvance,formatResumeHold,inflightEntries,inflightStaleHours,openPlanSession,parseOutcomeCode,parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,resolveResumeHold,shouldSuppressForResume,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-42XM4ZF6.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,
5
5
  failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-MBPJV745.js";import{claudeConfigDir,resolveDetectDeps}from"./chunk-5SONMN6K.js";import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-3OCV6SOR.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{duplicateTaskKeyDropReason,excludedKeyInArgs,extractPlanJson,parseOpsCount,parsePlanExcludeKeys,placeholderTaskKey,releaseDeployDropReason,stepToItem,zeroTargetDropReasons}from"./chunk-P54LCXEY.js";
6
- import{buildLoopConfig,evaluateOwnership,exportStateDirEnv,localConfigPath,loopStateDir}from"./chunk-6EQLA56A.js";import{CapacityReporter}from"./chunk-VYDPW2YO.js";import{describeOperations,evaluatePlanGate,planGateStatePath,recordPlanned}from"./chunk-CVX2YWHC.js";import{formatHookIds,formatHookWiring,runHook,runPrefetch,runPreflight}from"./chunk-TTST7UDR.js";import{redactLoopOutput}from"./chunk-BABZL52A.js";import{exclusiveInflightEntries,formatExclusiveEntry,normalizeSkillName,
6
+ import{buildLoopConfig,evaluateOwnership,exportStateDirEnv,localConfigPath,loopStateDir}from"./chunk-INS77QHY.js";import{describeOperations,evaluatePlanGate,planGateStatePath,recordPlanned}from"./chunk-CVX2YWHC.js";import{CapacityReporter}from"./chunk-VYDPW2YO.js";import{formatHookIds,formatHookWiring,runHook,runPrefetch,runPreflight}from"./chunk-TTST7UDR.js";import{redactLoopOutput}from"./chunk-BABZL52A.js";import{exclusiveInflightEntries,formatExclusiveEntry,normalizeSkillName,
7
7
  spawnSyncResolved}from"./chunk-FABDZBDZ.js";import{setSkillPrefix,skillCommand,skillFromPrompt,stripSkillCommand}from"./chunk-6CS5L24D.js";import{killProcessTree}from"./chunk-N2UVRM3Z.js";import{AgentLoopApi,describeError,filterByStatus,isPermanent,pick,pickString}from"./chunk-UZUV5FYG.js";import{PRIVATE_PROJECT_REF,isPrivateProjectId,isPrivateProjectRef,privateProjectId,projectFileKey}from"./chunk-RMFLTSOV.js";import"./chunk-5TKHN3A5.js";import{ULID_RE,loopProjectIdPolicy,
8
8
  resolveProjectRef}from"./chunk-HVZUXLQ4.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{joinFor}from"./chunk-PMOUHEJQ.js";import{AuthSession}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{compareVersionCores,parseVersionCore}from"./chunk-DXXFUNYN.js";import"./chunk-5WGOHFAS.js";import{effectiveApiUrl,resolveProfile}from"./chunk-EDF4U5BT.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";import{
9
- stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs9 from"fs";import path7 from"path";import fs from"fs";import path from"path";var LoopLogger=class{constructor(runnerId,logFile,out=process.stdout,now=()=>new Date){this.runnerId=runnerId;this.out=out;this.now=now;if(logFile){fs.mkdirSync(path.dirname(logFile),{recursive:true});this.stream=fs.createWriteStream(logFile,{flags:"a"})}}runnerId;out;now;stream=null;log(message){const d=this.now();const ts=`${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;const line=`[${ts}] [${this.runnerId}] ${stripTerminalControls(
9
+ effectiveOrientation,renderOrientationSection}from"./chunk-NJL3H2BB.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs9 from"fs";import path7 from"path";import fs from"fs";import path from"path";var LoopLogger=class{constructor(runnerId,logFile,out=process.stdout,now=()=>new Date){this.runnerId=runnerId;this.out=out;this.now=now;if(logFile){fs.mkdirSync(path.dirname(logFile),{recursive:true});this.stream=fs.createWriteStream(logFile,{flags:"a"})}}runnerId;out;now;stream=null;log(message){const d=this.now();const ts=`${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;const line=`[${ts}] [${this.runnerId}] ${stripTerminalControls(
10
10
  message)}
11
11
  `;this.out.write(line);this.stream?.write(line)}separator(){this.log("=".repeat(60))}close(){this.stream?.end();this.stream=null}};function pad(n){return String(n).padStart(2,"0")}function rotateLogs(dir,retentionDays,now=Date.now()){if(retentionDays<=0)return;const cutoff=now-retentionDays*864e5;let entries;try{entries=fs.readdirSync(dir)}catch{return}for(const name of entries){if(!/^(agent-loop|task-loop|step|plan|schedule-enqueued)-.*\.(log|txt)$/.test(name))continue;const file=path.join(dir,
12
12
  name);try{if(fs.statSync(file).mtimeMs<cutoff)fs.rmSync(file,{force:true})}catch{}}}import fs6 from"fs";import os2 from"os";import path4 from"path";var MAX_OUTCOME_DETAIL_LENGTH=1e3;function parseOutcomeDetail(logText){const matches=[...logText.matchAll(/\b[A-Z][A-Z0-9_]*_RESULT:[^\n]*/g)];const line=matches.at(-1)?.[0];if(line===void 0)return null;const sep=line.indexOf("|");if(sep<0)return null;const detail=line.slice(sep+1).split("|").map(s=>s.trim()).filter(s=>s!=="").join(" | ");return detail===""?null:detail.slice(0,MAX_OUTCOME_DETAIL_LENGTH)}var str=v=>typeof v==="string"&&v!==""?v:null;function toRun(v){if(v===null||typeof v!=="obje\
@@ -104,7 +104,7 @@ var MAX_STEPS=100;var MAX_SCHEDULED=100;var MAX_CONTRACT_LINES=20;var MAX_CONTRA
104
104
  detail:clip(redactLoopOutput(drop.reason.slice(ENQUEUE_ERROR_PREFIX.length)),MAX_DETAIL_CHARS)}}const code=PLAN_SUPPRESS_REASONS[drop.reason]??(drop.reason.endsWith(PLAN_GUARD_REASON_SUFFIX)?PLAN_GUARD_REASON_CODE:void 0);return{...base,outcome:"suppressed",reason:code??"other",detail:code===void 0?clip(redactLoopOutput(drop.reason),MAX_DETAIL_CHARS):null}}function extractContractLines(output){const lines=[...output.matchAll(/^.*\b[A-Z][A-Z0-9_]*_RESULT:.*$/gm)].map(m=>m[0].trim().slice(0,MAX_CONTRACT_LINE_CHARS)).
105
105
  filter(l=>l!=="");return lines.slice(-MAX_CONTRACT_LINES)}function standaloneRecord(result,scheduled){return{result,ai_type:null,ai_model:null,cost_usd:null,tokens_in:null,tokens_out:null,turns:null,duration_ms:null,final_report:null,contract_lines:[],steps:[],scheduled:scheduled.slice(0,MAX_SCHEDULED)}}function planRecord(input){const{engine,summary}=input;const metrics=engine?.metrics;const steps=[...input.enqueuedSteps.map(s=>({outcome:"enqueued",task_key:clip(s.task_key,MAX_TASK_KEY_CHARS),label:clip(
106
106
  s.label,MAX_LABEL_CHARS),item_id:s.item_id,reason:null,detail:null})),...(summary?.dropped??[]).map(dropToStep)];const output=redactLoopOutput(engine?.output??"");return{result:input.result,ai_type:engine?.serverAiType??null,ai_model:null,cost_usd:metrics?.costUsd??null,tokens_in:metrics?.tokensIn??null,tokens_out:metrics?.tokensOut??null,turns:metrics?.turns??null,duration_ms:input.durationMs===null?null:Math.max(0,Math.trunc(input.durationMs)),final_report:output.trim()===""?null:truncateResult(
107
- output),contract_lines:extractContractLines(output),steps:steps.slice(0,MAX_STEPS),scheduled:input.scheduled.slice(0,MAX_SCHEDULED)}}import{execFile}from"child_process";async function lookupPrHead(repo,number,timeoutMs=15e3){if(!/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(repo)||!Number.isInteger(number)||number<=0)return null;const viaGh=await run("gh",["api",`repos/${repo}/pulls/${number}`,"--jq",".head.sha"],timeoutMs);const ghSha=/^([0-9a-f]{40})\s*$/.exec(viaGh??"")?.[1];if(ghSha)return ghSha;const viaGit=await run("git",["ls-remote",`https://github.com/${repo}.git`,`refs/pull/${number}/head`],timeoutMs);return/^([0-9a-f]{40})\s/m.
107
+ output),contract_lines:extractContractLines(output),steps:steps.slice(0,MAX_STEPS),scheduled:input.scheduled.slice(0,MAX_SCHEDULED),...input.orientation===null||input.orientation===void 0?{}:{orientation:input.orientation}}}import{execFile}from"child_process";async function lookupPrHead(repo,number,timeoutMs=15e3){if(!/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(repo)||!Number.isInteger(number)||number<=0)return null;const viaGh=await run("gh",["api",`repos/${repo}/pulls/${number}`,"--jq",".head.sha"],timeoutMs);const ghSha=/^([0-9a-f]{40})\s*$/.exec(viaGh??"")?.[1];if(ghSha)return ghSha;const viaGit=await run("git",["ls-remote",`https://github.com/${repo}.git`,`refs/pull/${number}/head`],timeoutMs);return/^([0-9a-f]{40})\s/m.
108
108
  exec(viaGit??"")?.[1]??null}function run(file,args,timeoutMs){return new Promise(resolve=>{execFile(file,args,{timeout:timeoutMs,env:{...process.env,GIT_TERMINAL_PROMPT:"0",GH_PROMPT_DISABLED:"1"}},(err,stdout)=>resolve(err?null:String(stdout)))})}var USER_ID_RE=/^[A-Za-z0-9._-]{1,64}$/;var ProjectApi=class{constructor(apiUrl,session,fetchImpl=httpFetch){this.apiUrl=apiUrl;this.session=session;this.fetchImpl=fetchImpl}apiUrl;session;fetchImpl;async resolve(ref){if(isPrivateProjectRef(ref))return this.resolvePrivate();return resolveProjectRef(ref,path8=>this.get(path8),loopProjectIdPolicy)}async resolvePrivate(){const res=await this.get("/api/v2/user");if(!res.ok){throw new Error(`\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
109
109
  status}\uFF09\u3002\u500B\u4EBA\u30AD\u30E5\u30FC\u3092\u56DE\u3059\u306B\u306F \`twp login\` \u304C\u5FC5\u8981\u3067\u3059\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const userId=res.json?.user?.id;if(typeof userId!=="string"||!USER_ID_RE.test(userId)){throw new Error(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30E6\u30FC\u30B6\u30FCID\u3092\u500B\u4EBA\u30AD\u30E5\u30FC\u306EID\u306B\u4F7F\u3048\u307E\u305B\u3093\uFF08${String(
110
110
  userId).slice(0,60)}\uFF09\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return{id:privateProjectId(userId),code:PRIVATE_PROJECT_REF,name:"\u500B\u4EBA\u30BF\u30B9\u30AF"}}async countByStatus(projectId,statusId){const res=await this.get(`/api/v2/projects/${projectId}/tasks?status_id=${encodeURIComponent(statusId)}&limit=1`);if(!res.ok){return{total:null,error:res.status===null?res.error??"\u901A\u4FE1\u5931\u6557":`HTTP ${res.status}`}}const total=res.json?.
@@ -185,16 +185,17 @@ deps.api.reclaim();if(!res.ok){this.deps.log.log(` \u26A0\uFE0F \u6B7B\u3093\u
185
185
  if(res.ok)return;if(res.status===404){log.log(` \u2139\uFE0F \u8A08\u753B\u306E\u5B9F\u884C\u8A18\u9332\uFF08result=${result}\uFF09\u3092\u9001\u308C\u307E\u305B\u3093\u3067\u3057\u305F: \u30B5\u30FC\u30D0\u304C plan/runs \u306B\u672A\u5BFE\u5FDC\u3067\u3059\uFF08404\uFF09`);return}log.log(` \u26A0\uFE0F \u8A08\u753B\u306E\u5B9F\u884C\u8A18\u9332\uFF08result=${result}\uFF09\u3092\u9001\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(res)}\uFF09\u3002\u30EB\u30FC\u30D7\u306F\u7D9A\u3051\u307E\u3059`)}async planGateSaysSkip(){
186
186
  const{config,log}=this.deps;this.planGateFingerprint=null;const gate=config.operations.planGate;if(gate===null)return false;const decision=await evaluatePlanGate(gate,{cwd:config.workspace,statePath:planGateStatePath(config.stateDir,projectFileKey(config.projectId)),nowMs:Date.now()});log.log(` plan_gate: ${decision.reason}`);this.planGateFingerprint=decision.fingerprint;return decision.skip}recordPlanGateFingerprint(){const{config,log}=this.deps;const fingerprint=this.planGateFingerprint;this.
187
187
  planGateFingerprint=null;if(fingerprint===null)return;const statePath=planGateStatePath(config.stateDir,projectFileKey(config.projectId));if(!recordPlanned(statePath,fingerprint,Date.now())){log.log(` \u26A0\uFE0F plan_gate: \u8A08\u753B\u6642\u306E\u6307\u7D0B\u3092 ${statePath} \u306B\u8A18\u9332\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u6B21\u30B5\u30A4\u30AF\u30EB\u3082\u8A08\u753B\u3057\u307E\u3059\uFF09`)}}async runPlanAndEnqueue(cycle){const{config,log}=this.deps;this.lastPlanWasEmpty=
188
- false;const planStartedMs=Date.now();let engineResult=null;const enqueuedSteps=[];const setRecord=(result2,summary2)=>{this.planRunRecord=planRecord({result:result2,engine:engineResult,durationMs:Date.now()-planStartedMs,summary:summary2,enqueuedSteps,scheduled:this.planRunScheduled})};const planSkill=config.operations.planSkill;if(planSkill===null)return"failed";log.separator();log.log("Phase 1: \u8A08\u753B\u3092\u7ACB\u6848\u3057\u3066\u30AD\u30E5\u30FC\u306B\u683C\u7D0D...");log.separator();
189
- const planLogFile=path4.join(config.logDir,`plan-${this.timestamp}-${cycle}.log`);const enqueuedFile=path4.join(config.logDir,`schedule-enqueued-${this.timestamp}.txt`);const scheduleSection=await this.schedule.promptSection(enqueuedFile);if(config.prefetch.length>0)log.log(`\u8A08\u753B\u7528\u30C7\u30FC\u30BF\u3092\u4E8B\u524D\u53D6\u5F97\u4E2D\uFF08\u30D5\u30C3\u30AF ${config.prefetch.length}\u4EF6\uFF09...`);const prefetchSection=await runPrefetch(config.prefetch,config.workspace,m=>log.log(
190
- m));const excludeKeys=parsePlanExcludeKeys(prefetchSection);if(excludeKeys.size>0){log.log(` \u8A08\u753B\u5019\u88DC\u304B\u3089\u5916\u3059\u30BF\u30B9\u30AF\uFF08\u672A\u56DE\u7B54\u306E\u8CEA\u554F\u3042\u308A\uFF09: ${[...excludeKeys].sort().join(", ")}`)}const taskStatusSnapshot=parseTaskStatusSnapshot(prefetchSection);if(taskStatusSnapshot===null){log.log(" \u26A0\uFE0F prefetch \u306B OPS_TASK_STATUS \u30DE\u30FC\u30AB\u30FC\u304C\u3042\u308A\u307E\u305B\u3093");log.log(" \u300C\u524D\u56DE\u304C\u72B6\u614B\u3092\u9032\
191
- \u3081\u305F\uFF0F\u518D\u958B\u6761\u4EF6\u4ED8\u304D\u3067\u636E\u3048\u7F6E\u3044\u305F\u5834\u5408\u306E\u518D\u6295\u5165\u6291\u6B62\u300D\u306F**\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u7121\u52B9**\u3067\u3059\uFF08\u6295\u5165\u306F\u6B62\u3081\u307E\u305B\u3093\uFF09")}else if(!taskStatusSnapshot.complete){log.log(" \u26A0\uFE0F \u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u4E00\u90E8\u53D6\u5F97\u3067\u304D\u3066\u3044\u307E\u305B\u3093\uFF08complete=0\uFF09\u2192 \u518D\u6295\u5165\u6291\u6B62\u306F\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u7121\u52B9\u3067\u3059")}
192
- const outcomeReports=await fetchOutcomeReports(this.deps.api,config.outcomeSkills??[]);for(const w of outcomeStreakWarnings(outcomeReports))log.log(` \u26A0\uFE0F ${w}`);const outcomeSection=renderOutcomeSection(outcomeReports);const blocks=await this.snapshotDynamicBlocks(taskStatusSnapshot);let planSession;try{planSession=openPlanSession(path4.join(config.stateDir,"plan-submit"),[...fileSkillNames([path4.join(config.workspace,".claude","commands"),...process.env.CLAUDE_CONFIG_DIR?[path4.join(
193
- process.env.CLAUDE_CONFIG_DIR,"commands")]:[],path4.join(os2.homedir(),".claude","commands")]),...this.skills.names()],blocks)}catch(err){log.log(` \u26A0\uFE0F \u8A08\u753B\u306E\u63D0\u51FA\u53E3\u3092\u6E96\u5099\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09\u3002\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u306F\u5FDC\u7B54\u306E\u6587\u7AE0\u304B\u3089\u8A08\u753B\u3092\u53D6\u308A\u51FA\u3057\u307E\u3059`);planSession=NO_PLAN_SESSION}let result;let submitted;let rejectedSubmissions=[];
194
- try{result=await this.engine.run({prompt:buildPlanPrompt(config,planSkill,scheduleSection,prefetchSection,outcomeSection),promptPrefix:this.cyclePreflightSection,logFile:planLogFile,timeoutSec:config.planTimeoutSec,cwd:config.workspace,skill:normalizeSkillName(planSkill.replace(/^\//,"")),...Object.keys(planSession.env).length>0?{extraEnv:planSession.env}:{},validate:output=>planSession.submission()!==null||extractPlanJson(output)!==null});submitted=planSession.submission();rejectedSubmissions=planSession.
195
- rejections()}finally{planSession.close()}writeLogFile(planLogFile,result.output);engineResult=result;noteAiAvailability(this.deps.runner,result);setRecord(result.outcome==="ok"?"error":"ai_failed",null);if(result.outcome==="aborted"){log.log(" \u23F9 \u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u306B\u3088\u308A\u8A08\u753B\u3092\u6253\u3061\u5207\u308A\u307E\u3057\u305F");return"aborted"}if(result.outcome!=="ok"){if(isAiUnavailable(result.outcome)){log.log(` \u23ED AI \u3092\u8D77\u52D5\u3067\u304D\u306A\u3044\u305F\u3081\u8A08\u753B\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08outcome=${result.
196
- outcome}${result.aiReasons===void 0?"":` / ${result.aiReasons}`}\uFF09`);return result.outcome}log.log(` \u26D4 \u8A08\u753B\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08outcome=${result.outcome}\uFF09`);return"failed"}if(this.planLock.isLost()){log.log(` \u26D4 \u8A08\u753B\u4E2D\u306B\u8A08\u753B\u30ED\u30C3\u30AF\u3092\u5931\u3044\u307E\u3057\u305F\uFF08reason=${this.planLock.lostReasonText()}\uFF09`);log.log(" **\u30A8\u30F3\u30AD\u30E5\u30FC\u3092\u4E2D\u6B62\u3057\u307E\u3059**\u3002\u8A08\u753B\u7D50\u679C\u306F\u7834\u68C4\u3057\u3001\u6B21\u30B5\u30A4\u30AF\u30EB\u3067\u53D6\u308A\u76F4\u3057\u307E\u3059");
197
- setRecord("error",null);return"ok"}const unchecked=unavailableChecks(blocks);const recordResult=summary2=>{const line=formatPlanResultLine(rejectedSubmissions.length>0?{...summary2,rejected_submissions:rejectedSubmissions}:summary2);log.log(line);try{fs6.appendFileSync(planLogFile,`
188
+ false;const planStartedMs=Date.now();let engineResult=null;let passedOrientation=null;const enqueuedSteps=[];const setRecord=(result2,summary2)=>{this.planRunRecord=planRecord({result:result2,orientation:passedOrientation,engine:engineResult,durationMs:Date.now()-planStartedMs,summary:summary2,enqueuedSteps,scheduled:this.planRunScheduled})};const planSkill=config.operations.planSkill;if(planSkill===null)return"failed";log.separator();log.log("Phase 1: \u8A08\u753B\u3092\u7ACB\u6848\u3057\u3066\u30AD\u30E5\u30FC\u306B\u683C\u7D0D...");
189
+ log.separator();const planLogFile=path4.join(config.logDir,`plan-${this.timestamp}-${cycle}.log`);const enqueuedFile=path4.join(config.logDir,`schedule-enqueued-${this.timestamp}.txt`);const scheduleSection=await this.schedule.promptSection(enqueuedFile);if(config.prefetch.length>0)log.log(`\u8A08\u753B\u7528\u30C7\u30FC\u30BF\u3092\u4E8B\u524D\u53D6\u5F97\u4E2D\uFF08\u30D5\u30C3\u30AF ${config.prefetch.length}\u4EF6\uFF09...`);const prefetchSection=await runPrefetch(config.prefetch,config.workspace,
190
+ m=>log.log(m));const excludeKeys=parsePlanExcludeKeys(prefetchSection);if(excludeKeys.size>0){log.log(` \u8A08\u753B\u5019\u88DC\u304B\u3089\u5916\u3059\u30BF\u30B9\u30AF\uFF08\u672A\u56DE\u7B54\u306E\u8CEA\u554F\u3042\u308A\uFF09: ${[...excludeKeys].sort().join(", ")}`)}const taskStatusSnapshot=parseTaskStatusSnapshot(prefetchSection);if(taskStatusSnapshot===null){log.log(" \u26A0\uFE0F prefetch \u306B OPS_TASK_STATUS \u30DE\u30FC\u30AB\u30FC\u304C\u3042\u308A\u307E\u305B\u3093");log.log(" \
191
+ \u300C\u524D\u56DE\u304C\u72B6\u614B\u3092\u9032\u3081\u305F\uFF0F\u518D\u958B\u6761\u4EF6\u4ED8\u304D\u3067\u636E\u3048\u7F6E\u3044\u305F\u5834\u5408\u306E\u518D\u6295\u5165\u6291\u6B62\u300D\u306F**\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u7121\u52B9**\u3067\u3059\uFF08\u6295\u5165\u306F\u6B62\u3081\u307E\u305B\u3093\uFF09")}else if(!taskStatusSnapshot.complete){log.log(" \u26A0\uFE0F \u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u4E00\u90E8\u53D6\u5F97\u3067\u304D\u3066\u3044\u307E\u305B\u3093\uFF08complete=0\uFF09\u2192 \u518D\u6295\u5165\u6291\u6B62\u306F\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u7121\u52B9\u3067\u3059")}
192
+ const outcomeReports=await fetchOutcomeReports(this.deps.api,config.outcomeSkills??[]);for(const w of outcomeStreakWarnings(outcomeReports))log.log(` \u26A0\uFE0F ${w}`);const outcomeSection=renderOutcomeSection(outcomeReports);const orientationSection=renderOrientationSection(config.orientation);passedOrientation=orientationSection===""?null:effectiveOrientation(config.orientation);const blocks=await this.snapshotDynamicBlocks(taskStatusSnapshot);let planSession;try{planSession=openPlanSession(
193
+ path4.join(config.stateDir,"plan-submit"),[...fileSkillNames([path4.join(config.workspace,".claude","commands"),...process.env.CLAUDE_CONFIG_DIR?[path4.join(process.env.CLAUDE_CONFIG_DIR,"commands")]:[],path4.join(os2.homedir(),".claude","commands")]),...this.skills.names()],blocks)}catch(err){log.log(` \u26A0\uFE0F \u8A08\u753B\u306E\u63D0\u51FA\u53E3\u3092\u6E96\u5099\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09\u3002\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u306F\u5FDC\u7B54\u306E\u6587\u7AE0\u304B\u3089\u8A08\u753B\u3092\u53D6\u308A\u51FA\u3057\u307E\u3059`);
194
+ planSession=NO_PLAN_SESSION}let result;let submitted;let rejectedSubmissions=[];try{result=await this.engine.run({prompt:buildPlanPrompt(config,planSkill,scheduleSection,prefetchSection,outcomeSection,orientationSection),promptPrefix:this.cyclePreflightSection,logFile:planLogFile,timeoutSec:config.planTimeoutSec,cwd:config.workspace,skill:normalizeSkillName(planSkill.replace(/^\//,"")),...Object.keys(planSession.env).length>0?{extraEnv:planSession.env}:{},validate:output=>planSession.submission()!==
195
+ null||extractPlanJson(output)!==null});submitted=planSession.submission();rejectedSubmissions=planSession.rejections()}finally{planSession.close()}writeLogFile(planLogFile,result.output);engineResult=result;noteAiAvailability(this.deps.runner,result);setRecord(result.outcome==="ok"?"error":"ai_failed",null);if(result.outcome==="aborted"){log.log(" \u23F9 \u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u306B\u3088\u308A\u8A08\u753B\u3092\u6253\u3061\u5207\u308A\u307E\u3057\u305F");return"aborted"}if(result.
196
+ outcome!=="ok"){if(isAiUnavailable(result.outcome)){log.log(` \u23ED AI \u3092\u8D77\u52D5\u3067\u304D\u306A\u3044\u305F\u3081\u8A08\u753B\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08outcome=${result.outcome}${result.aiReasons===void 0?"":` / ${result.aiReasons}`}\uFF09`);return result.outcome}log.log(` \u26D4 \u8A08\u753B\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08outcome=${result.outcome}\uFF09`);return"failed"}if(this.planLock.isLost()){log.log(` \u26D4 \u8A08\u753B\u4E2D\u306B\u8A08\u753B\u30ED\u30C3\u30AF\u3092\
197
+ \u5931\u3044\u307E\u3057\u305F\uFF08reason=${this.planLock.lostReasonText()}\uFF09`);log.log(" **\u30A8\u30F3\u30AD\u30E5\u30FC\u3092\u4E2D\u6B62\u3057\u307E\u3059**\u3002\u8A08\u753B\u7D50\u679C\u306F\u7834\u68C4\u3057\u3001\u6B21\u30B5\u30A4\u30AF\u30EB\u3067\u53D6\u308A\u76F4\u3057\u307E\u3059");setRecord("error",null);return"ok"}const unchecked=unavailableChecks(blocks);const recordResult=summary2=>{const line=formatPlanResultLine(rejectedSubmissions.length>0?{...summary2,rejected_submissions:rejectedSubmissions}:
198
+ summary2);log.log(line);try{fs6.appendFileSync(planLogFile,`
198
199
  ${line}
199
200
  `)}catch{}};if(submitted?.empty===true){log.log("\u8A08\u753BAI\u306F\u7A7A\u306E\u8A08\u753B\uFF080\u4EF6\uFF09\u3092\u63D0\u51FA\u3057\u307E\u3057\u305F");recordResult({source:"submit",empty:true,planned:0,enqueued:0,dropped:[],unchecked});setRecord("empty",null);this.lastPlanWasEmpty=true;return"ok"}if(submitted!==null){log.log(`\u63D0\u51FA\u3055\u308C\u305F\u8A08\u753B\u3092\u4F7F\u3044\u307E\u3059\uFF08plan submit\u30FB${submitted.plan.steps.length}\u4EF6\u30FB${submitted.submitted_at}\uFF09`)}else{
200
201
  log.log("\u8A08\u753B\u306E\u63D0\u51FA\u304C\u7121\u3044\u305F\u3081\u3001\u5FDC\u7B54\u306E\u6587\u7AE0\u304B\u3089\u8A08\u753B\u3092\u53D6\u308A\u51FA\u3057\u307E\u3059")}const plan=submitted?.plan??extractPlanJson(result.output);const source=submitted!==null?"submit":plan?"text":"none";if(!plan||plan.steps.length===0){log.log("\u8A08\u753B\u306Bsteps\u304C\u3042\u308A\u307E\u305B\u3093");recordResult({source,empty:true,planned:0,enqueued:0,dropped:[],unchecked});setRecord(plan?"empty":"json_\
@@ -270,9 +271,9 @@ const res=await api.claim(config.runnerId,config.runId);if(res.ok){const reason=
270
271
  "empty")return{kind:"empty"};if(reason==="filtered"){const by=res.json?.filtered_by;return{kind:"filtered",by:Array.isArray(by)?by.filter(b=>typeof b==="string"):[]}}if(reason!=="runner_not_registered"){log.log(` \u26A0\uFE0F claim \u306E\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08reason='${reason}'\uFF09\u3002`);log.log(` **\u30AD\u30E5\u30FC\u304C\u7A7A\u304B\u3069\u3046\u304B\u306F\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002** \u5FDC\u7B54\u306E\u5148\u982D: ${res.
271
272
  raw.slice(0,120)}`);return{kind:"undetermined"}}}attempt+=1;if(res.status===409||pickString(res.json,"reason")==="runner_not_registered"){log.log(" \u26A0\uFE0F claim \u304C 409\uFF08\u30E9\u30F3\u30CA\u30FC\u672A\u767B\u9332\u6271\u3044\uFF09\u3002register \u304B\u3089\u3084\u308A\u76F4\u3057\u307E\u3059");runner.registered=false;try{await runner.registerOrThrow()}catch{return{kind:"undetermined"}}if(attempt>=3)return{kind:"undetermined"};continue}if(attempt>=3){log.log(` \u26A0\uFE0F claim API\u304C3\u56DE\u9023\u7D9A\u3067\
272
273
  \u5931\u6557\uFF08${describeError(res)}\uFF09\u3002`);log.log(" **\u30AD\u30E5\u30FC\u304C\u7A7A\u304B\u3069\u3046\u304B\u306F\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002** \u672A\u51E6\u7406\u306E\u30A2\u30A4\u30C6\u30E0\u304C\u6B8B\u3063\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002");return{kind:"undetermined"}}log.log(` \u26A0\uFE0F claim API\u304C\u5FDC\u7B54\u3057\u307E\u305B\u3093\uFF08${describeError(res)}\uFF09\u3002${attempt}\u56DE\u76EE\u30FB5\u79D2\u5F8C\u306B\u518D\u8A66\u884C`);
273
- await this.sleep(5e3)}}};function writeLogFile(file,text){try{fs6.mkdirSync(path4.dirname(file),{recursive:true});fs6.writeFileSync(file,text)}catch{}}function buildPlanPrompt(config,planSkill,scheduleSection,prefetchSection,outcomeSection=""){return[promptText(config,"plan_preamble",""),config.safeMode?promptText(config,"safe_mode_note",SAFE_MODE_NOTE):"",promptText(config,"non_interactive_note",NON_INTERACTIVE_NOTE),scheduleSection,prefetchSection,outcomeSection,planSkill].filter(s=>s!=="").join(
274
- "\n\n")}function promptText(config,key,builtin){return config.serverPrompts?.[key]??builtin}function buildStepPrompt(config,body){const timeoutMin=Math.trunc(config.aiTimeoutSec/60);const softMin=Math.trunc(config.aiTimeoutSec*config.aiSoftDeadlineRatio/100/60);const wrapUpMin=Math.max(0,timeoutMin-softMin);return[renderStepBudget(promptText(config,"step_budget",STEP_BUDGET),{timeoutMin,softMin,wrapUpMin}),config.safeMode?promptText(config,"safe_mode_note",SAFE_MODE_NOTE):"",promptText(config,"n\
275
- on_interactive_note",NON_INTERACTIVE_NOTE),body].filter(s=>s!=="").join("\n\n")}var STEP_BUDGET=["\u3010\u5B9F\u884C\u6642\u9593\u306E\u4E88\u7B97\u3011\u3053\u306E\u5B9F\u884C\u306F {timeout_min}\u5206 \u3067\u30D7\u30ED\u30BB\u30B9\u304C\u5F37\u5236\u7D42\u4E86\u3055\u308C\u307E\u3059\u3002\u4E88\u544A\u3084\u7336\u4E88\u306F\u3042\u308A\u307E\u305B\u3093\u3002",["- \u958B\u59CB\u304B\u3089 **{soft_min}\u5206** \u3092\u904E\u304E\u305F\u3089\u3001\u4F5C\u696D\u3092\u6253\u3061\u5207\u3063\u3066\u7DE0\u3081\u51E6\u7406\u306B\u5165\u3063\u3066\u304F\u3060\u3055\u3044\uFF08\u30B3\u30DF\u30C3\u30C8 \u2192 push \u2192 PR\u4F5C\u6210 \u2192 \u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u30FB\u62C5\u5F53\u306E\u66F4\u65B0 \u2192 \u5F15\u304D\u7D99\u304E\u30B3\u30E1\u30F3\u30C8\uFF09",
274
+ await this.sleep(5e3)}}};function writeLogFile(file,text){try{fs6.mkdirSync(path4.dirname(file),{recursive:true});fs6.writeFileSync(file,text)}catch{}}function buildPlanPrompt(config,planSkill,scheduleSection,prefetchSection,outcomeSection="",orientationSection=""){return[promptText(config,"plan_preamble",""),config.safeMode?promptText(config,"safe_mode_note",SAFE_MODE_NOTE):"",promptText(config,"non_interactive_note",NON_INTERACTIVE_NOTE),scheduleSection,prefetchSection,outcomeSection,orientationSection,
275
+ planSkill].filter(s=>s!=="").join("\n\n")}function promptText(config,key,builtin){return config.serverPrompts?.[key]??builtin}function buildStepPrompt(config,body){const timeoutMin=Math.trunc(config.aiTimeoutSec/60);const softMin=Math.trunc(config.aiTimeoutSec*config.aiSoftDeadlineRatio/100/60);const wrapUpMin=Math.max(0,timeoutMin-softMin);return[renderStepBudget(promptText(config,"step_budget",STEP_BUDGET),{timeoutMin,softMin,wrapUpMin}),config.safeMode?promptText(config,"safe_mode_note",SAFE_MODE_NOTE):
276
+ "",promptText(config,"non_interactive_note",NON_INTERACTIVE_NOTE),body].filter(s=>s!=="").join("\n\n")}var STEP_BUDGET=["\u3010\u5B9F\u884C\u6642\u9593\u306E\u4E88\u7B97\u3011\u3053\u306E\u5B9F\u884C\u306F {timeout_min}\u5206 \u3067\u30D7\u30ED\u30BB\u30B9\u304C\u5F37\u5236\u7D42\u4E86\u3055\u308C\u307E\u3059\u3002\u4E88\u544A\u3084\u7336\u4E88\u306F\u3042\u308A\u307E\u305B\u3093\u3002",["- \u958B\u59CB\u304B\u3089 **{soft_min}\u5206** \u3092\u904E\u304E\u305F\u3089\u3001\u4F5C\u696D\u3092\u6253\u3061\u5207\u3063\u3066\u7DE0\u3081\u51E6\u7406\u306B\u5165\u3063\u3066\u304F\u3060\u3055\u3044\uFF08\u30B3\u30DF\u30C3\u30C8 \u2192 push \u2192 PR\u4F5C\u6210 \u2192 \u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u30FB\u62C5\u5F53\u306E\u66F4\u65B0 \u2192 \u5F15\u304D\u7D99\u304E\u30B3\u30E1\u30F3\u30C8\uFF09",
276
277
  "- \u7DE0\u3081\u51E6\u7406\u306B\u306F10\u5206\u7A0B\u5EA6\u3092\u898B\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044\uFF08{soft_min}\u5206\u6642\u70B9\u3067\u306E\u6B8B\u308A\u306F {wrap_up_min}\u5206\uFF09","- **\u7D4C\u904E\u6642\u9593\u306F `date` \u3067\u5B9F\u6E2C\u3057\u3066\u304F\u3060\u3055\u3044\u3002** \u4F53\u611F\u3067\u300C\u4E88\u7B97\u304C\u5C3D\u304D\u304B\u3051\u3066\u3044\u308B\u300D\u3068\u5224\u65AD\u3057\u306A\u3044\u3053\u3068\u2014\u2014\u5B9F\u6E2C\u305B\u305A\u306B\u65E9\u671F\u96E2\u8131\u3059\u308B\u3068\u3001\u6B8B\u308A\u6642\u9593\u304C\u3042\u308B\u306E\u306B\u5DE5\u7A0B\u304C\u9014\u4E2D\u3067\u6B62\u307E\u308A\u307E\u3059\uFF08\u5B9F\u6E2C\u305B\u305A\u306B\u8FF0\u3079\u305F\u6B8B\u308A\u6642\u9593\u306F\u61B2\u7AE0A3\u9055\u53CD\uFF09",
277
278
  "- \u6B8B\u4F5C\u696D\u306F\u300C\u5B8C\u4E86\u3057\u305F\u7BC4\u56F2\u300D\u3068\u300C\u672A\u7740\u624B\u306E\u7BC4\u56F2\u300D\u3092\u5206\u3051\u3066\u30BF\u30B9\u30AF\u3078\u66F8\u3051\u3070\u3001\u6B21\u306E\u30B5\u30A4\u30AF\u30EB\u3067\u7D99\u7D9A\u3067\u304D\u307E\u3059","- \u30B9\u30B3\u30FC\u30D7\u304C {timeout_min}\u5206 \u306B\u53CE\u307E\u3089\u306A\u3044\u3068\u5224\u65AD\u3057\u305F\u3089\u3001\u5B9F\u88C5\u3092\u7D9A\u3051\u305A\u30BF\u30B9\u30AF\u306E\u5206\u5272\u3092\u63D0\u6848\u3057\u3066\u304F\u3060\u3055\u3044"].
278
279
  join("\n"),"**\u5927\u304D\u306A\u672A\u5B8C\u6210\u3088\u308A\u3001\u5C0F\u3055\u304F\u3066\u3082\u5B8C\u6210\u3057\u3066\u3044\u308B\u72B6\u614B\u3092\u512A\u5148\u3057\u3066\u304F\u3060\u3055\u3044**\uFF08\u61B2\u7AE0A2: \u9593\u306B\u5408\u308F\u306A\u3044\u3068\u304D\u306B\u524A\u308B\u306E\u306F\u30B9\u30B3\u30FC\u30D7\u3067\u3042\u3063\u3066\u62C5\u4FDD\u3067\u306F\u306A\u3044\uFF09\u3002"].join("\n\n");var SAFE_MODE_NOTE=`\u3010\u5B89\u5168\u30E2\u30FC\u30C9\u6709\u52B9\u3011\u672C\u756A\u30EA\u30EA\u30FC\u30B9\u306F\u7981\u6B62\u3067\u3059\u3002\u4EE5\u4E0B\u3092\u7D76\u5BFE\u306B\u5B9F\u884C\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044:
@@ -300,23 +301,25 @@ handlers.onRestart({from:decision.from,to:decision.to})};const timer=setInterval
300
301
  pid<=0)return null;return{pid,at:sanitizeAt(at)}}catch{return null}}function sanitizeAt(at){if(typeof at!=="string")return"";return at.replace(/[\u0000-\u001f\u007f]/g," ").slice(0,MAX_AT_LENGTH)}function clearMarker(lockDir2,kind,deps={}){const rm=deps.rmSync??(p=>fs8.rmSync(p,{recursive:true,force:true}));try{rm(markerPath(lockDir2,kind))}catch{}}function watchMarker(lockDir2,kind,selfPid,onStop,deps={}){let fired=false;const timer=setInterval(()=>{if(fired)return;const req=readMarker(lockDir2,kind,deps);if(req===null||req.pid!==selfPid)return;fired=true;onStop(req)},deps.intervalMs??POLL_MS);timer.unref?.();return()=>{fired=true;clearInterval(timer)}}function safe(s){return stripTerminalControls(s)}function compactTimestamp(at=new Date){const p2=n=>String(n).padStart(2,"0");return`${at.getFullYear()}${p2(at.getMonth()+1)}${p2(at.getDate())}-${p2(at.getHours())}${p2(at.getMinutes())}${p2(at.getSeconds())}`}async function buildEngine(config,log){if(config.engine==="noop")return new NoopEngine;const{DispatchEngine}=await import("./ai-dispatch-FVHIWBCX.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-FVHIWBCX.js");const extraHosts=config.
301
302
  operations.preflightHosts;return new DispatchEngine(config.ai,log,{workspace:config.workspace,charterFile:config.charterFile??void 0,charterEnabled:config.charterEnabled,...config.charterPrefix===null?{}:{charterPrefix:config.charterPrefix},...config.charterSuffix===null?{}:{charterSuffix:config.charterSuffix},serverPrompts:()=>config.serverPrompts??{},compileCommand:config.compileCommand??void 0,skillOverlayDir:path7.join(config.stateDir,"skill-overlay",projectFileKey(config.projectId)),launcherBin:config.
302
303
  claudeLauncher.bin,...extraHosts.length>0?{preflightHosts:[...DEFAULT_PREFLIGHT_HOSTS,...extraHosts]}:{}})}function lockDir(config){return path7.join(config.stateDir,`task-loop-${projectFileKey(config.projectId)}.lock.d`)}function runnerIdPersisted(stateDir,env=process.env){if((env.RUNNER_ID?.trim()??"")!=="")return true;const file=env.RUNNER_ID_FILE&&env.RUNNER_ID_FILE.trim()!==""?env.RUNNER_ID_FILE:path7.join(stateDir,"runner-id");return fs9.existsSync(file)}async function runTaskLoop(opts){if(opts.
303
- action==="stop")return await stopLoop(opts);if(opts.action==="plan"){if(opts.planOp!=="submit"){process.stderr.write("plan \u306B\u306F submit \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runPlanSubmit}=await import("./plan-submit-3LCM44YE.js");return runPlanSubmit({file:opts.charterInput,empty:opts.planEmpty===true,check:opts.planCheck===true},{env:process.env,readStdin:()=>fs9.readFileSync(0,"utf8"),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}
304
+ action==="stop")return await stopLoop(opts);if(opts.action==="plan"){if(opts.planOp!=="submit"){process.stderr.write("plan \u306B\u306F submit \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runPlanSubmit}=await import("./plan-submit-7724A3OV.js");return runPlanSubmit({file:opts.charterInput,empty:opts.planEmpty===true,check:opts.planCheck===true},{env:process.env,readStdin:()=>fs9.readFileSync(0,"utf8"),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}
304
305
  const profile=resolveProfile(opts.profile);let creds;try{creds=new AuthSession(profile.name,profile.apiUrl).loadOrThrow()}catch(err){process.stderr.write(`${err.message}
305
306
  `);return 1}const apiUrl=effectiveApiUrl(profile,creds.api_url);const session=new AuthSession(profile.name,apiUrl);if(opts.action==="capacity"&&opts.capacityOp==="list"){let filterId;if(opts.project!==void 0&&opts.project!==""){try{filterId=(await new ProjectApi(apiUrl,session).resolve(opts.project)).id}catch(err){process.stderr.write(`${err.message}
306
307
  `);return 1}}const api2=new AgentLoopApi({apiUrl,projectId:filterId??"",session});const{runCapacityList}=await import("./capacity-list-command-CPUOR57V.js");return runCapacityList({get:()=>api2.runnersOverview()},{output:opts.output,query:opts.query,includeStopped:opts.includeStopped===true,projectId:filterId})}const projectRef=opts.project??process.env.TWP_PROJECT??"";if(projectRef===""){process.stderr.write("--project <\u30AD\u30FC|UUID> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08TWP_PROJECT \u3067\u3082\u53EF\uFF09\n");
307
308
  return 2}const projectApi=new ProjectApi(apiUrl,session);let project;try{project=await projectApi.resolve(projectRef)}catch(err){process.stderr.write(`${err.message}
308
- `);return 1}const projectId=project.id;if(opts.action==="setup"){const{runSetup,parseAiList}=await import("./setup-FX2IUBHT.js");let ais;if(opts.ais!==void 0&&opts.ais.length>0){const parsed=parseAiList(opts.ais.join(","));if(parsed.unknown.length>0){process.stderr.write(`--ai \u306B\u672A\u77E5\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${parsed.unknown.join(" / ")}
309
+ `);return 1}const projectId=project.id;if(opts.action==="setup"){const{runSetup,parseAiList}=await import("./setup-ICJPTYKW.js");let ais;if(opts.ais!==void 0&&opts.ais.length>0){const parsed=parseAiList(opts.ais.join(","));if(parsed.unknown.length>0){process.stderr.write(`--ai \u306B\u672A\u77E5\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${parsed.unknown.join(" / ")}
309
310
  `);return 2}ais=parsed.ais}return runSetup({projectId,projectRef,projectName:project.name===project.id?projectRef:`${project.code} / ${project.name}`,apiUrl,yes:opts.yes===true,...ais!==void 0?{ais}:{},...opts.workspace!==void 0?{workspace:opts.workspace}:{},...opts.aiConfigFile!==void 0?{aiConfigFile:opts.aiConfigFile}:{},...opts.noAiConfigFile===true?{noAiConfigFile:true}:{},...opts.profile!==void 0?{profile:opts.profile}:{}})}if(opts.action==="charter"){if(opts.charterOp===void 0){process.stderr.
310
311
  write("charter \u306B\u306F push / pull / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u61B2\u7AE0\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}if(opts.charterOp!=="push"&&opts.charterOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-KT7NMRES.js");
311
312
  return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"charter",op:opts.charterOp,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const{runCharterCommand}=await import("./charter-command-A4MFFBGE.js");return runCharterCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.charterOp,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,
312
313
  profile:opts.profile})}if(opts.action==="runner"){if(opts.runnerOp===void 0){process.stderr.write("runner \u306B\u306F list / remove \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runRunnerCommand}=await import("./runner-command-PIHQW65P.js");return runRunnerCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.runnerOp,runnerId:opts.runnerId,output:opts.output,query:opts.query,yes:opts.yes===true,projectRef,profile:opts.profile})}
313
314
  if(opts.action==="schedule"&&opts.scheduleOp!==void 0){const{runScheduleDefCommand}=await import("./schedule-def-command-OFCA5VH3.js");return runScheduleDefCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.scheduleOp,configOp:opts.scheduleConfigOp,id:opts.scheduleId,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="settings"){if(opts.settingsOp===void 0){process.stderr.write("settings \u306B\u306F pu\
314
- sh / pull \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30EB\u30FC\u30D7\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}const{runSettingsCommand}=await import("./settings-command-TEVH2MNY.js");return runSettingsCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.settingsOp,
315
- file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="skill"){if(opts.skillOp===void 0){process.stderr.write("skill \u306B\u306F push / pull / list / show / delete / history / diff / revert / check \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");
316
- return 2}if(opts.skillOp==="check"){const{runSkillCheck}=await import("./skill-check-VNUNX6IO.js");return runSkillCheck({api:new AgentLoopApi({apiUrl,projectId,session})},{configPath:opts.skillConfig,defaultConfigPath:localConfigPath(projectId),output:opts.output})}if(opts.skillOp==="list"||opts.skillOp==="show"||opts.skillOp==="delete"){const{runSkillManageCommand}=await import("./skill-manage-command-RKQHSPRJ.js");return runSkillManageCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.
317
- skillOp,name:opts.skillName,output:opts.output,query:opts.query,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.skillOp!=="push"&&opts.skillOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-KT7NMRES.js");return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"skill",op:opts.skillOp,name:opts.skillName,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.
318
- profile})}const{runSkillCommand}=await import("./skill-command-4VMZ2H6A.js");return runSkillCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.skillOp,name:opts.skillName,all:opts.skillAll===true,dir:opts.skillDir,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const config=buildLoopConfig({projectId,projectRef,apiUrl,safeMode:opts.safe,daemon:opts.daemon,...opts.maxCycles!==void 0?{maxCycles:opts.maxCycles}:{},...opts.interval!==void 0?{intervalSec:opts.
319
- interval}:{},forceRunner:opts.forceRunner,...opts.engine!==void 0?{engine:opts.engine}:{},version:opts.version});const api=new AgentLoopApi({apiUrl,projectId,session});if(opts.action==="capacity"){if(opts.capacityOp!=="report"){process.stderr.write("capacity \u306B\u306F report / list \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}
315
+ sh / pull \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30EB\u30FC\u30D7\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}const{runSettingsCommand}=await import("./settings-command-3SLINN5N.js");return runSettingsCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.settingsOp,
316
+ file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="orientation"){if(opts.orientationOp===void 0){process.stderr.write("orientation \u306B\u306F show / set / on / off / add / remove \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runOrientationCommand}=await import("./orientation-command-PQ3QXDPE.js");return runOrientationCommand({api:new AgentLoopApi({apiUrl,
317
+ projectId,session})},{op:opts.orientationOp,args:opts.orientationArgs??[],revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="skill"){if(opts.skillOp===void 0){process.stderr.write("skill \u306B\u306F push / pull / list / show / delete / history / diff / revert / check \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __priv\
318
+ ate__\uFF09\u306B\u306F\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}if(opts.skillOp==="check"){const{runSkillCheck}=await import("./skill-check-VNUNX6IO.js");return runSkillCheck({api:new AgentLoopApi({apiUrl,projectId,session})},{configPath:opts.skillConfig,defaultConfigPath:localConfigPath(projectId),output:opts.output})}if(opts.skillOp==="list"||opts.skillOp==="show"||opts.skillOp==="delete"){const{runSkillManageCommand}=await import("./skill-manage-command-RKQHSPRJ.js");
319
+ return runSkillManageCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.skillOp,name:opts.skillName,output:opts.output,query:opts.query,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.skillOp!=="push"&&opts.skillOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-KT7NMRES.js");return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"skill",op:opts.skillOp,name:opts.skillName,from:opts.revisionFrom,
320
+ to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const{runSkillCommand}=await import("./skill-command-4VMZ2H6A.js");return runSkillCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.skillOp,name:opts.skillName,all:opts.skillAll===true,dir:opts.skillDir,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const config=buildLoopConfig({projectId,projectRef,apiUrl,safeMode:opts.safe,daemon:opts.daemon,
321
+ ...opts.maxCycles!==void 0?{maxCycles:opts.maxCycles}:{},...opts.interval!==void 0?{intervalSec:opts.interval}:{},forceRunner:opts.forceRunner,...opts.engine!==void 0?{engine:opts.engine}:{},version:opts.version});const api=new AgentLoopApi({apiUrl,projectId,session});if(opts.action==="capacity"){if(opts.capacityOp!=="report"){process.stderr.write("capacity \u306B\u306F report / list \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}for(const warning of config.
322
+ warnings)process.stderr.write(`\u26A0\uFE0F ${warning}
320
323
  `);const{runCapacityReport}=await import("./capacity-report-command-CENWVTKK.js");return runCapacityReport({api,projectId,runnerId:config.runnerId,stateDir:config.stateDir,cwd:config.workspace,probe:config.capacityProbe,runnerIdPersisted:runnerIdPersisted(config.stateDir),version:opts.version,platform:runnerPlatform(),stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s)})}if(opts.action==="status"||opts.action==="schedule"){for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}\
321
324
 
322
325
  `)}if(opts.action==="status")return showStatus(api,config,opts);if(opts.action==="schedule"){const{runScheduleCommand}=await import("./schedule-command-4TFAFIAO.js");return runScheduleCommand({api,projectApi,config},{now:opts.scheduleNow,counts:opts.scheduleCounts,gate:opts.scheduleGate,verbose:opts.verbose===true})}if(config.engine===""){process.stderr.write(`${new EngineNotConfiguredError().message}
@@ -335,7 +338,7 @@ log.log("\u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u3092\u53D7\u4FE1\u3057\u307E\u305
335
338
  "\u6642\u523B\u4E0D\u660E"}\uFF09\u3002\u7D42\u4E86\u3057\u307E\u3059...`);stopWatcher?.();drainWatcher?.();driftWatcher?.();void shutdown().catch(()=>void 0).then(()=>process.exit(130))});drainWatcher=watchMarker(lockDir(config),"drain",process.pid,req=>{drainWatcher?.();if(loop===null){pendingDrain.value={reason:`stop --drain\u30FB${req.at||"\u6642\u523B\u4E0D\u660E"}`,exitCode:0};log.log(`\u30C9\u30EC\u30A4\u30F3\u8981\u6C42\u3092\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F\uFF08${req.at||"\u6642\u523B\u4E0D\u660E"}\
336
339
  \uFF09\u3002\u8D77\u52D5\u51E6\u7406\u306E\u5B8C\u4E86\u5F8C\u306B\u53CD\u6620\u3057\u307E\u3059\u3002`);return}loop.requestDrain(`stop --drain\u30FB${req.at||"\u6642\u523B\u4E0D\u660E"}`)});if(installed!==null){const watch=watchVersionDrift({runningVersion:opts.version,stateDir:config.stateDir,projectKey:projectFileKey(config.projectId),supervised:autoRestart.supervised,disabled:autoRestart.disabled},{onWarn:reason=>log.log(`\u26A0\uFE0F ${reason}`),onRestart:({from,to})=>{driftWatcher?.();log.
337
340
  log(`\u7248\u30C9\u30EA\u30D5\u30C8\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\uFF08${from} \u2192 ${to}\uFF09\u3002`);log.log(` \u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u5B8C\u8D70\u3055\u305B\u3066\u304B\u3089\u7D42\u4E86\u3057\u307E\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 ${EXIT_VERSION_DRIFT}\uFF09\u3002\u518D\u8D77\u52D5\u306F systemd\uFF08Restart=always\uFF09\u304C\u884C\u3044\u307E\u3059`);const reason=`\u7248\u30C9\u30EA\u30D5\u30C8 ${from} \u2192 ${to} \u306B\u3088\u308B\u81EA\u52D5\u518D\u8D77\u52D5`;
338
- if(loop===null)pendingDrain.value={reason,exitCode:EXIT_VERSION_DRIFT};else loop.requestDrain(reason,EXIT_VERSION_DRIFT)}});driftWatcher=watch.stop}try{const{LoopSettingsApplier:LoopSettingsApplier2}=await import("./server-settings-TFVXMOJB.js");const settings=new LoopSettingsApplier2({api,config,log:m=>log.log(m)});await settings.apply();const{ServerSkillCatalog:ServerSkillCatalog2}=await import("./server-skills-5JESWOTH.js");const skills=new ServerSkillCatalog2({api,config,log:m=>log.log(m)});await skills.
341
+ if(loop===null)pendingDrain.value={reason,exitCode:EXIT_VERSION_DRIFT};else loop.requestDrain(reason,EXIT_VERSION_DRIFT)}});driftWatcher=watch.stop}try{const{LoopSettingsApplier:LoopSettingsApplier2}=await import("./server-settings-DR3KPUCD.js");const settings=new LoopSettingsApplier2({api,config,log:m=>log.log(m)});await settings.apply();const{ServerSkillCatalog:ServerSkillCatalog2}=await import("./server-skills-5JESWOTH.js");const skills=new ServerSkillCatalog2({api,config,log:m=>log.log(m)});await skills.
339
342
  refresh();await runner.checkHeartbeatInterval();await runner.registerOrThrow();runner.startHeartbeatWorker();log.log(` heartbeat: ${config.heartbeatIntervalSec}\u79D2\u3054\u3068\u306B\u9001\u4FE1${runner.heartbeatTimeoutServer?`\uFF08\u30B5\u30FC\u30D0\u306E\u6B7B\u6D3B\u3057\u304D\u3044\u5024 ${runner.heartbeatTimeoutServer}\u79D2\uFF09`:""}`);loop=new TaskLoop({api,projectApi,config,log,runner,engine:await buildEngine(config,m=>log.log(m)),settings,skills});if(pendingDrain.value!==null){loop.
340
343
  requestDrain(pendingDrain.value.reason,pendingDrain.value.exitCode)}exitCode=await loop.run()}catch(err){if(err instanceof RunnerRegistrationError){exitCode=1}else{log.log(`\u26D4 \u4E88\u671F\u3057\u306A\u3044\u30A8\u30E9\u30FC\u3067\u7D42\u4E86\u3057\u307E\u3059: ${err.message}`);exitCode=1}}finally{await shutdown()}return exitCode}async function showStatus(api,config,opts){const{runStatusCommand}=await import("./status-command-5G7ZNGN2.js");const lock=lockDir(config);return runStatusCommand(api,
341
344
  {projectRef:config.projectRef,projectId:config.projectId,apiUrl:config.apiUrl,lockPath:lock,lockHeld:fs9.existsSync(lock),profile:opts.profile},{output:opts.output,query:opts.query},{out:s=>process.stdout.write(s),err:s=>process.stderr.write(s)})}var STOP_WAIT_MS=18e4;var STOP_POLL_MS=250;function defaultIsAlive(pid){try{process.kill(pid,0);return true}catch(err){return err.code==="EPERM"}}async function stopLoop(opts,deps={}){const platform=deps.platform??process.platform;const isLoopProcess=deps.
@@ -1,14 +1,15 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{GLOBAL_FLAGS}from"./chunk-HPBAAKJS.js";import"./chunk-2LOT54OO.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-X3F7DOP5.js";import{BUILTIN_COMMANDS,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,rewriteQueueCommand}from"./chunk-EOXTDZTA.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
3
+ import{GLOBAL_FLAGS}from"./chunk-C7MCP63I.js";import"./chunk-2LOT54OO.js";import{ORIENTATION_OPS}from"./chunk-NJL3H2BB.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-X3F7DOP5.js";import{BUILTIN_COMMANDS,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,rewriteQueueCommand}from"./chunk-QBUVJBZ2.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";
4
+ import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
4
5
  function positionals(words,takesValue){const out=[];for(let i=0;i<words.length;i++){const word=words[i]??"";if(word==="--"){out.push(...words.slice(i+1));break}if(word.startsWith("-")){if(!word.includes("=")&&takesValue(word))i++;continue}out.push(word)}return out}function byPrefix(candidates,current){const seen=new Set;for(const candidate of candidates){if(candidate.startsWith(current))seen.add(candidate)}return[...seen]}function remainingFlags(flags,words){const used=new Set(words.filter(w=>w.
5
6
  startsWith("--")).map(w=>w.split("=")[0]));return[...flags.filter(f=>f.repeatable===true||!used.has(f.name)).map(f=>f.name),...DOMAIN_GLOBAL_FLAGS.filter(f=>!used.has(f))]}async function complete(rawWords,current,ctx){const queue=rewriteQueueCommand(rawWords);if(queue.moved!==void 0)return[];const words=queue.argv;const previous=words[words.length-1];if(previous!==void 0&&previous.startsWith("--")&&!previous.includes("=")){const values=staticValues(previous,ctx);if(values!==void 0)return byPrefix(
6
7
  values,current)}const eq=current.indexOf("=");if(current.startsWith("--")&&eq>0){const flag=current.slice(0,eq);const values=staticValues(flag,ctx);return values===void 0?[]:byPrefix(values.map(v=>`${flag}=${v}`),current)}const pos=positionals(words,flag=>VALUE_FLAGS.has(flag));const[first,second]=pos;if(first===void 0){if(current.startsWith("-"))return byPrefix([...TOP_LEVEL_FLAGS,...DOMAIN_GLOBAL_FLAGS],current);return byPrefix([...BUILTIN_COMMANDS,...DOMAIN_NAMES.filter(name=>name!==QUEUE_DOMAIN),
7
8
  ...EXTRA_TOP_LEVEL],current)}if(first==="completion")return pos.length===1?byPrefix(COMPLETION_SHELLS,current):[];if(first==="configure")return current.startsWith("-")?byPrefix(["--profile"],current):[];if(first===HELP_TOKEN)return pos.length===1?byPrefix([...DOMAIN_NAMES.filter(name=>name!==QUEUE_DOMAIN),API_TOKEN],current):[];if(first==="task-loop"){if(pos.length===1&&!current.startsWith("-"))return byPrefix([...TASK_LOOP_ACTIONS,...TASK_LOOP_QUEUE_ACTIONS],current);if(pos.length===2&&(second===
8
- "charter"||second==="skill")&&!current.startsWith("-")){const ops=["push","pull","history","diff","revert"];return byPrefix(second==="skill"?[...ops,"list","show","delete","check"]:ops,current)}if(pos.length===2&&second==="settings"&&!current.startsWith("-"))return byPrefix(["push","pull"],current);if(pos.length===2&&second==="plan"&&!current.startsWith("-"))return byPrefix(["submit"],current);if(pos.length===2&&second==="capacity"&&!current.startsWith("-"))return byPrefix(["report"],current);if(pos.
9
- length===2&&second==="runner"&&!current.startsWith("-"))return byPrefix(["list","remove"],current);return[]}if(!isDomainName(first))return[];const domain=await ctx.loadDomain(first);const subresources=domain.subresources??[];if(second===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...domain.operations.map(op=>op.name),...subresources.map(sub2=>sub2.name),HELP_TOKEN],current)}const sub=subresources.find(resource=>resource.name===second);let operation;
10
- if(sub!==void 0){const third=pos[2];if(third===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...sub.operations.map(op=>op.name),HELP_TOKEN],current)}operation=sub.operations.find(op=>op.name===third)}else{operation=domain.operations.find(op=>op.name===second)}if(operation===void 0)return[];if(!current.startsWith("-"))return[];return byPrefix(remainingFlags(operation.flags,words),current)}function completionScript(shell){switch(shell){case"bash":
11
- return`# twp \u306E bash \u88DC\u5B8C\uFF08twp completion bash \u304C\u51FA\u529B\uFF09
9
+ "charter"||second==="skill")&&!current.startsWith("-")){const ops=["push","pull","history","diff","revert"];return byPrefix(second==="skill"?[...ops,"list","show","delete","check"]:ops,current)}if(pos.length===2&&second==="settings"&&!current.startsWith("-"))return byPrefix(["push","pull"],current);if(pos.length===2&&second==="orientation"&&!current.startsWith("-"))return byPrefix(ORIENTATION_OPS,current);if(pos.length===2&&second==="plan"&&!current.startsWith("-"))return byPrefix(["submit"],current);
10
+ if(pos.length===2&&second==="capacity"&&!current.startsWith("-"))return byPrefix(["report"],current);if(pos.length===2&&second==="runner"&&!current.startsWith("-"))return byPrefix(["list","remove"],current);return[]}if(!isDomainName(first))return[];const domain=await ctx.loadDomain(first);const subresources=domain.subresources??[];if(second===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...domain.operations.map(op=>op.name),...subresources.map(
11
+ sub2=>sub2.name),HELP_TOKEN],current)}const sub=subresources.find(resource=>resource.name===second);let operation;if(sub!==void 0){const third=pos[2];if(third===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...sub.operations.map(op=>op.name),HELP_TOKEN],current)}operation=sub.operations.find(op=>op.name===third)}else{operation=domain.operations.find(op=>op.name===second)}if(operation===void 0)return[];if(!current.startsWith("-"))return[];return byPrefix(
12
+ remainingFlags(operation.flags,words),current)}function completionScript(shell){switch(shell){case"bash":return`# twp \u306E bash \u88DC\u5B8C\uFF08twp completion bash \u304C\u51FA\u529B\uFF09
12
13
  # \u8AAD\u307F\u8FBC\u307F: eval "$(twp completion bash)" \uFF0F \u5E38\u7528: ~/.bashrc \u306B\u540C\u30581\u884C\u3092\u66F8\u304F
13
14
  # \uFF08source <(...) \u306F macOS \u6A19\u6E96\u306E bash 3.2 \u3067\u8AAD\u307F\u8FBC\u307E\u308C\u306A\u3044\u306E\u3067\u4F7F\u308F\u306A\u3044\uFF09
14
15
  # \u78BA\u5B9A\u6E08\u307F\u306E\u8A9E\u306F\u914D\u5217\u30B9\u30E9\u30A4\u30B9\u3067\u306F\u306A\u304F\u30EB\u30FC\u30D7\u3067\u96C6\u3081\u308B\uFF08macOS \u6A19\u6E96\u306E bash 3.2 \u3067\u3082\u540C\u3058\u306B\u52D5\u304B\u3059\u305F\u3081\uFF09
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{BOOLEAN_FLAGS,BUILTIN_COMMANDS,MOVED_QUEUE_COMMAND_MESSAGE,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,dispatch,resolveRoute,rewriteQueueCommand}from"./chunk-EOXTDZTA.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";export{BOOLEAN_FLAGS,BUILTIN_COMMANDS,MOVED_QUEUE_COMMAND_MESSAGE,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,dispatch,resolveRoute,rewriteQueueCommand};
3
+ import{BOOLEAN_FLAGS,BUILTIN_COMMANDS,MOVED_QUEUE_COMMAND_MESSAGE,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,dispatch,resolveRoute,rewriteQueueCommand}from"./chunk-QBUVJBZ2.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";export{BOOLEAN_FLAGS,BUILTIN_COMMANDS,MOVED_QUEUE_COMMAND_MESSAGE,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,dispatch,resolveRoute,rewriteQueueCommand};
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{LICENSE_FEATURE_NAMES,judge,licenseDomain,readLicenses,releaseCommand,resolveFeature}from"./chunk-VRRDGI2I.js";import"./chunk-ZFSQJAYZ.js";import"./chunk-QLENN5DD.js";import"./chunk-4DOPQ74T.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import"./chunk-MI6HVYR2.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";
3
+ import{LICENSE_FEATURE_NAMES,judge,licenseDomain,readLicenses,releaseCommand,resolveFeature}from"./chunk-2J5A4Q7U.js";import"./chunk-ZFSQJAYZ.js";import"./chunk-QLENN5DD.js";import"./chunk-4DOPQ74T.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import"./chunk-MI6HVYR2.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";
4
4
  import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{LICENSE_FEATURE_NAMES,judge,licenseDomain,readLicenses,releaseCommand,resolveFeature};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{defaultIsLoopProcess,readLockOwner,sameTwpHome}from"./chunk-3WHC4FSG.js";import{LEGACY_STATE_DIR_NAME,STATE_DIR_NAME,loopStateDir}from"./chunk-6EQLA56A.js";import"./chunk-VYDPW2YO.js";import"./chunk-CVX2YWHC.js";import"./chunk-TTST7UDR.js";import"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-RMFLTSOV.js";import"./chunk-PMOUHEJQ.js";import"./chunk-5WGOHFAS.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";
3
+ import{defaultIsLoopProcess,readLockOwner,sameTwpHome}from"./chunk-3WHC4FSG.js";import{LEGACY_STATE_DIR_NAME,STATE_DIR_NAME,loopStateDir}from"./chunk-INS77QHY.js";import"./chunk-CVX2YWHC.js";import"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-RMFLTSOV.js";import"./chunk-PMOUHEJQ.js";import"./chunk-5WGOHFAS.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";
4
4
  import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs from"fs";import os from"os";import path from"path";var PIDLESS_GRACE_MS=6e4;function defaultStateDirs(env){const home=os.homedir();const dirs=[loopStateDir(env),path.join(home,STATE_DIR_NAME),path.join(home,LEGACY_STATE_DIR_NAME)].map(d=>path.resolve(d));return[...new Set(dirs)]}function readPidFile(lockDir){try{const raw=fs.readFileSync(path.join(lockDir,"pid"),"utf8").split("\n")[0]?.trim()??"";const n=Number.parseInt(raw,10);return{pid:Number.isInteger(n)&&n>0?n:null,error:null}}catch(err){const code=err.code;return{pid:null,error:code==="ENO\
5
5
  ENT"?null:code??err.message}}}function findLoopsUsingProfile(profileName,deps={}){const env=deps.env??process.env;const now=deps.now??Date.now;const isLoopProcess=deps.isLoopProcess??defaultIsLoopProcess;const myHome=twpHomeDir(env);const result={users:[],undetermined:[]};for(const stateDir of deps.stateDirs??defaultStateDirs(env)){let dirs;try{dirs=fs.readdirSync(stateDir).filter(d=>/^task-loop-.*\.lock\.d$/.test(d))}catch(err){if(err.code==="ENOENT")continue;result.undetermined.push({pid:null,
6
6
  lockDir:stateDir,reason:`\u30ED\u30C3\u30AF\u306E\u7F6E\u304D\u5834\u6240\u3092\u8AAD\u3081\u307E\u305B\u3093\uFF08${err.code??err.message}\uFF09`});continue}for(const dir of dirs){const lockDir=path.join(stateDir,dir);const pidFile=readPidFile(lockDir);if(pidFile.error!==null){result.undetermined.push({pid:null,lockDir,reason:`pid \u3092\u8AAD\u3081\u307E\u305B\u3093\uFF08${pidFile.error}\uFF09`});continue}const owner=readLockOwner(lockDir);let pid=pidFile.pid;if(pid===null){if(owner.ok){pid=owner.
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{checkOutTarget}from"./chunk-XIAZ6ZJG.js";import"./chunk-MSZWJ24L.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-24AJQUDZ.js";import{contentTypeFor,inspectLocalFile}from"./chunk-WTYIFLVB.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import"./chunk-RMFLTSOV.js";import{readBody}from"./chunk-A3VGBVQP.js";import"./chunk-W4NLJ2YK.js";
3
+ import{checkOutTarget}from"./chunk-3TDGVH3E.js";import"./chunk-DJCPPFTI.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-24AJQUDZ.js";import{contentTypeFor,inspectLocalFile}from"./chunk-WTYIFLVB.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import"./chunk-RMFLTSOV.js";import{readBody}from"./chunk-A3VGBVQP.js";import"./chunk-W4NLJ2YK.js";
4
4
  import"./chunk-5TKHN3A5.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-4DOPQ74T.js";import{collapsesInUrlPath,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger,readEnvelopeCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";
5
5
  import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import"./chunk-PECIBNFD.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-X3F7DOP5.js";import"./chunk-QQRJLH6B.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";
6
6
  import"./chunk-VSJBJXZO.js";import crypto2 from"crypto";import fs2 from"fs";import path from"path";var SCOPE_PERSONAL="personal";var SCOPE_PROJECT="project";var UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var FORBIDDEN_NAME=/[/\\:*?"<>|]/;var NAME_MAX=255;var ROW_COLUMNS=["id","path","name","file_count","subfolder_count","parent_id","updated_at"];var TRASH_COLUMNS=["id","path","name","file_count","subfolder_count","parent_id","deleted_at"];function folderRows(raw){return raw.map(row=>{const id=row["id"];const name=row["name"];const parentId=row["parent_id"];if(typeof id!==
@@ -0,0 +1,25 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{fetchState,putSettings}from"./chunk-MTK4WY54.js";import{shellQuote,warnHiddenChars}from"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{EXIT_OK,EXIT_USAGE}from"./chunk-VFPY2A23.js";import{ORIENTATION_AXES_MAX,ORIENTATION_DESCRIPTION_MAX,ORIENTATION_KEY_PATTERN,ORIENTATION_LABEL_MAX,ORIENTATION_WEIGHT_MAX,parseOrientation}from"./chunk-NJL3H2BB.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var ARITY={show:{min:0,max:0,usage:"orientation show"},on:{min:0,max:0,usage:"orientation on"},off:{min:0,max:0,usage:"orientation off"},set:{min:2,max:2,usage:"orientation set <key> <0-100>"},add:{min:3,max:4,usage:"orientation add <key> <\u30E9\u30D9\u30EB> <0-100> [\u8AAC\u660E]"},remove:{min:1,max:1,usage:"orientation remove <key>"}};async function runOrientationCommand(deps,opts){const out=deps.out??(t=>void process.stdout.write(stripTerminalControls(t)));const err=deps.err??(t=>void process.
4
+ stderr.write(stripTerminalControls(t)));const arity=ARITY[opts.op];if(opts.args.length<arity.min||opts.args.length>arity.max){err(`\u4F7F\u3044\u65B9: twp task-loop ${arity.usage}
5
+ `);return EXIT_USAGE}let expected;if(opts.revision!==void 0){if(opts.op==="show"){err("--revision \u306F\u66F8\u304D\u8FBC\u3080\u64CD\u4F5C\u3067\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059\n");return EXIT_USAGE}if(!/^\d+$/.test(opts.revision)||!Number.isSafeInteger(Number(opts.revision))){err(`--revision \u306F0\u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${opts.revision}
6
+ `);return EXIT_USAGE}if(!opts.yes){err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u767B\u9332\u3057\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=Number(opts.revision)}const current=await fetchState(deps.api,err);if(typeof current==="number")return current;const before=parseOrientation(current.orientation);const rawAxes=current.orientation?.axes;if(current.orientation!==null&&(before===null||(Array.
7
+ isArray(rawAxes)?rawAxes.length:0)!==before.axes.length)){err("\u26D4 \u30B5\u30FC\u30D0\u306E orientation \u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\u3002settings pull \u3067\u4E2D\u8EAB\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\n");return EXIT_USAGE}if(opts.op==="show"){out(formatOrientation(before,current.revision));return EXIT_OK}const after=applyOp(before,opts.op,opts.args);if(typeof after==="string"){err(`\u26D4 ${after}
8
+ `);return EXIT_USAGE}if(JSON.stringify(before)===JSON.stringify(after)){out(`\u5909\u66F4\u306F\u3042\u308A\u307E\u305B\u3093\uFF08revision ${current.revision}\uFF09\u3002\u767B\u9332\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
9
+ `);return EXIT_OK}out(`\u5909\u66F4\u524D\uFF08\u30B5\u30FC\u30D0 revision ${current.revision}\uFF09:
10
+ ${formatAxes(before)}
11
+ \u5909\u66F4\u5F8C:
12
+ ${formatAxes(after)}
13
+ `);if(opts.op==="add")warnHiddenChars(out,`${after.axes.at(-1)?.label??""}${after.axes.at(-1)?.description??""}`);if(!opts.yes){out(`
14
+ \u767B\u9332\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u3053\u306E\u5909\u66F4\u3067\u78BA\u5B9A\u3059\u308B\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08revision ${current.revision} \u3092\u9001\u308B\u306E\u3067\u3001\u305D\u306E\u5F8C\u30B5\u30FC\u30D0\u304C\u66F4\u65B0\u3055\u308C\u3066\u3044\u308C\u3070 409 \u3067\u6B62\u307E\u308A\u307E\u3059\uFF09:
15
+ ${confirmCommand(opts,current.revision)}
16
+ `);return EXIT_USAGE}const revision=expected??current.revision;return putSettings(deps.api,{ai:current.ai,prompts:current.prompts,orientation:after,revision},revision,{out,err},"orientation show")}function applyOp(before,op,args){const base=before===null?{enabled:false,axes:[]}:{enabled:before.enabled,axes:before.axes.map(a=>({...a}))};switch(op){case"on":case"off":return{...base,enabled:op==="on"};case"set":{const[key="",raw=""]=args;const weight=parseWeight(raw);if(typeof weight==="string")return weight;
17
+ const axis=base.axes.find(a=>a.key===key);if(axis===void 0)return`\u8EF8 ${key} \u306F\u3042\u308A\u307E\u305B\u3093\uFF08\u767B\u9332\u6E08\u307F: ${keysOf(base)}\uFF09\u3002\u8DB3\u3059\u3068\u304D\u306F orientation add`;axis.weight=weight;return base}case"add":{const[key="",label="",raw="",description]=args;if(!ORIENTATION_KEY_PATTERN.test(key))return`key \u306F\u82F1\u5C0F\u6587\u5B57\u3067\u59CB\u307E\u308B\u82F1\u5C0F\u6587\u5B57\u30FB\u6570\u5B57\u30FB\u30CF\u30A4\u30D5\u30F3\uFF0864\u6587\u5B57\u307E\u3067\uFF09\u306B\u3057\u3066\u304F\u3060\u3055\u3044: ${key}`;
18
+ if(base.axes.some(a=>a.key===key))return`\u8EF8 ${key} \u306F\u65E2\u306B\u3042\u308A\u307E\u3059\u3002\u91CD\u307F\u3092\u5909\u3048\u308B\u3068\u304D\u306F orientation set`;if(base.axes.length>=ORIENTATION_AXES_MAX)return`\u8EF8\u306F${ORIENTATION_AXES_MAX}\u4EF6\u307E\u3067\u3067\u3059`;if(label.trim()===""||[...label].length>ORIENTATION_LABEL_MAX||new RegExp("\\p{C}","u").test(label)){return`\u30E9\u30D9\u30EB\u306F\u6539\u884C\u30FB\u5236\u5FA1\u6587\u5B57\u3092\u542B\u307E\u306A\u3044${ORIENTATION_LABEL_MAX}\
19
+ \u6587\u5B57\u4EE5\u5185\u306B\u3057\u3066\u304F\u3060\u3055\u3044`}if(description!==void 0&&([...description].length>ORIENTATION_DESCRIPTION_MAX||/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/.test(description))){return`\u8AAC\u660E\u306F\u6539\u884C\u30FB\u30BF\u30D6\u4EE5\u5916\u306E\u5236\u5FA1\u6587\u5B57\u3092\u542B\u307E\u306A\u3044${ORIENTATION_DESCRIPTION_MAX}\u6587\u5B57\u4EE5\u5185\u306B\u3057\u3066\u304F\u3060\u3055\u3044`}const weight=parseWeight(raw);if(typeof weight==="string")return weight;base.
20
+ axes.push({key,label,description:description===void 0||description===""?null:description,weight});return base}case"remove":{const[key=""]=args;if(!base.axes.some(a=>a.key===key))return`\u8EF8 ${key} \u306F\u3042\u308A\u307E\u305B\u3093\uFF08\u767B\u9332\u6E08\u307F: ${keysOf(base)}\uFF09`;return{...base,axes:base.axes.filter(a=>a.key!==key)}}}}function parseWeight(raw){if(!/^\d+$/.test(raw)||Number(raw)>ORIENTATION_WEIGHT_MAX)return`\u91CD\u307F\u306F 0\u301C${ORIENTATION_WEIGHT_MAX} \u306E\u6574\u6570\u306B\u3057\u3066\u304F\u3060\u3055\u3044:\
21
+ ${raw}`;return Number(raw)}function keysOf(o){return o.axes.length===0?"\u306A\u3057":o.axes.map(a=>a.key).join(", ")}function formatAxes(o){if(o===null)return" \uFF08\u672A\u8A2D\u5B9A\uFF09\n";const head=` ${o.enabled?"ON\uFF08\u8A08\u753BAI\u3078\u6E21\u3059\uFF09":"OFF\uFF08\u5024\u306F\u4FDD\u6301\u30FB\u8A08\u753BAI\u3078\u306F\u6E21\u3055\u306A\u3044\uFF09"}
22
+ `;if(o.axes.length===0)return`${head} \uFF08\u8EF8\u306A\u3057${o.enabled?"\u3002\u8EF8\u304C\u7121\u3044\u306E\u3067\u8A08\u753BAI\u3078\u306F\u4F55\u3082\u6E21\u308A\u307E\u305B\u3093":""}\uFF09
23
+ `;return head+o.axes.map(a=>` - ${a.key}: ${a.weight} ${a.label}${a.description===null?"":` \u2014 ${a.description}`}
24
+ `).join("")}function formatOrientation(o,revision){return`\u5FD7\u5411\u6027\uFF08revision ${revision}\uFF09:
25
+ ${formatAxes(o)}`}function confirmCommand(opts,revision){const parts=["twp task-loop orientation",opts.op,...opts.args.map(shellQuote),"--project",shellQuote(opts.projectRef)];if(opts.profile!==void 0)parts.push("--profile",shellQuote(opts.profile));parts.push("--yes","--revision",String(revision));return parts.join(" ")}export{applyOp,formatOrientation,runOrientationCommand};
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{NO_PLAN_SESSION,PLAN_DIR_ENV,PLAN_TOKEN_ENV,checkPlan,fileSkillNames,formatCheck,openPlanSession,runPlanSubmit}from"./chunk-7T5CEF6J.js";import"./chunk-P54LCXEY.js";import"./chunk-6EQLA56A.js";import"./chunk-VYDPW2YO.js";import"./chunk-CVX2YWHC.js";import"./chunk-TTST7UDR.js";import"./chunk-BABZL52A.js";import"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-UZUV5FYG.js";import"./chunk-RMFLTSOV.js";
3
+ import{NO_PLAN_SESSION,PLAN_DIR_ENV,PLAN_TOKEN_ENV,checkPlan,fileSkillNames,formatCheck,openPlanSession,runPlanSubmit}from"./chunk-42XM4ZF6.js";import"./chunk-P54LCXEY.js";import"./chunk-INS77QHY.js";import"./chunk-CVX2YWHC.js";import"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import"./chunk-BABZL52A.js";import"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-UZUV5FYG.js";import"./chunk-RMFLTSOV.js";
4
4
  import"./chunk-5TKHN3A5.js";import"./chunk-II5RVJQN.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{NO_PLAN_SESSION,PLAN_DIR_ENV,PLAN_TOKEN_ENV,checkPlan,fileSkillNames,formatCheck,openPlanSession,runPlanSubmit};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{loadDomain}from"./chunk-MSZWJ24L.js";import"./chunk-VSJBJXZO.js";export{loadDomain};
3
+ import{loadDomain}from"./chunk-DJCPPFTI.js";import"./chunk-VSJBJXZO.js";export{loadDomain};
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-XIAZ6ZJG.js";import"./chunk-MSZWJ24L.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-24AJQUDZ.js";import"./chunk-W4NLJ2YK.js";import"./chunk-5TKHN3A5.js";import"./chunk-RX5HWI4L.js";import"./chunk-4DOPQ74T.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";
3
+ import{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-3TDGVH3E.js";import"./chunk-DJCPPFTI.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-24AJQUDZ.js";import"./chunk-W4NLJ2YK.js";import"./chunk-5TKHN3A5.js";import"./chunk-RX5HWI4L.js";import"./chunk-4DOPQ74T.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";
4
4
  import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import"./chunk-MI6HVYR2.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-PECIBNFD.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-X3F7DOP5.js";import"./chunk-QQRJLH6B.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";
5
5
  import"./chunk-VSJBJXZO.js";export{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain};
@@ -0,0 +1,4 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{LoopSettingsApplier,PROMPT_KEYS,formatConfigHash,parseServerSettings,renderStepBudget}from"./chunk-5YJSWKQG.js";import"./chunk-INS77QHY.js";import"./chunk-CVX2YWHC.js";import"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-UZUV5FYG.js";import"./chunk-RMFLTSOV.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";
4
+ import"./chunk-RZVI6PMW.js";import"./chunk-NJL3H2BB.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{LoopSettingsApplier,PROMPT_KEYS,formatConfigHash,parseServerSettings,renderStepBudget};
@@ -0,0 +1,3 @@
1
+ import { createRequire as __twpCreateRequire } from 'node:module';
2
+ const require = __twpCreateRequire(import.meta.url);
3
+ import{DEFAULT_SETTINGS_FILE,fetchState,mergeLocal,putSettings,runSettingsCommand,serializeSettings}from"./chunk-MTK4WY54.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import"./chunk-VFPY2A23.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{DEFAULT_SETTINGS_FILE,fetchState,mergeLocal,putSettings,runSettingsCommand,serializeSettings};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{detectAiClis,formatDetection,isDetectableAi,isSelectable}from"./chunk-5SONMN6K.js";import{PromptAbortedError,promptText}from"./chunk-RACLI3FA.js";import{localConfigPath,parseClaudeLauncher}from"./chunk-6EQLA56A.js";import"./chunk-VYDPW2YO.js";import"./chunk-CVX2YWHC.js";import"./chunk-TTST7UDR.js";import{AiConfig}from"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-RMFLTSOV.js";import"./chunk-PMOUHEJQ.js";
3
+ import{detectAiClis,formatDetection,isDetectableAi,isSelectable}from"./chunk-5SONMN6K.js";import{PromptAbortedError,promptText}from"./chunk-RACLI3FA.js";import{localConfigPath,parseClaudeLauncher}from"./chunk-INS77QHY.js";import"./chunk-CVX2YWHC.js";import"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import{AiConfig}from"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-RMFLTSOV.js";import"./chunk-PMOUHEJQ.js";
4
4
  import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs from"fs";import path from"path";var RECOMMENDED_ROTATION={complex:["claude"],verify:["claude"],security:["claude"],support:["claude"],triage:["claude"],search:["claude"],simple:["claude"]};var RECOMMENDED_CHAINS={complex:["claude","codex"],verify:["claude","codex","copilot"],security:["claude","codex","copilot"],support:["claude","codex","copilot"],triage:["codex","gemini","copilot","claude"],search:["codex","gemini","copilot","claude"],simple:["codex","gemini","copilot","claude"]};var PREFERENCE=["claude","codex","gemini","co\
5
5
  pilot"];function buildAiAssignment(selected){if(selected.length===0)throw new Error("\u9078\u629E\u3055\u308C\u305FAI\u304C\u7A7A\u3067\u3059");const fallbackOrder=PREFERENCE.filter(ai=>selected.includes(ai));for(const ai of selected)if(!fallbackOrder.includes(ai))fallbackOrder.push(ai);const chains={};const rotation={};for(const category of Object.keys(RECOMMENDED_CHAINS)){const filtered=(RECOMMENDED_CHAINS[category]??[]).filter(ai=>selected.includes(ai));const chain=filtered.length>0?filtered:
6
6
  [...fallbackOrder];chains[category]=chain;const rot=(RECOMMENDED_ROTATION[category]??[]).filter(ai=>selected.includes(ai));const head=chain[0];rotation[category]=rot.length>0?rot:head===void 0?[...fallbackOrder]:[head]}return{primary_rotation:rotation,fallback_chains:chains}}var SETUP_EXIT_NO_CLI=3;var SETUP_EXIT_ABORTED=130;async function runSetup(opts){const env=opts.env??process.env;const rawOut=opts.out??(t=>void process.stdout.write(t));const rawErr=opts.err??(t=>void process.stderr.write(t));
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __twpCreateRequire } from 'node:module';
2
2
  const require = __twpCreateRequire(import.meta.url);
3
- import{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems}from"./chunk-4JJFIPTI.js";import{FISCAL_YEAR_FLAG,fiscalYear,skillNames}from"./chunk-VHKZ6RUA.js";import{LICENSE_FEATURE_NAMES,levelHoldsSeat,permissionMovesSeat,readLicenses}from"./chunk-VRRDGI2I.js";import{CONCURRENCY,exportOperation,mapPool,pacedSender}from"./chunk-ZFSQJAYZ.js";import"./chunk-ILEV32T6.js";import{readCsvFileText}from"./chunk-QLENN5DD.js";import"./chunk-SQMJ7XKE.js";import"./chunk-SPQJNTAK.js";
3
+ import{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems}from"./chunk-4JJFIPTI.js";import{FISCAL_YEAR_FLAG,fiscalYear,skillNames}from"./chunk-VHKZ6RUA.js";import{LICENSE_FEATURE_NAMES,levelHoldsSeat,permissionMovesSeat,readLicenses}from"./chunk-2J5A4Q7U.js";import{CONCURRENCY,exportOperation,mapPool,pacedSender}from"./chunk-ZFSQJAYZ.js";import"./chunk-ILEV32T6.js";import{readCsvFileText}from"./chunk-QLENN5DD.js";import"./chunk-SQMJ7XKE.js";import"./chunk-SPQJNTAK.js";
4
4
  import{USER_REF_FLAG,USER_REF_HELP,prepareUser,userPath}from"./chunk-UVCJXHWN.js";import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-45WIRMGL.js";import"./chunk-EXT4AIDF.js";import{booleanText,boundedText,isoDate,isoDateValue}from"./chunk-JJSBBWJ5.js";import"./chunk-A3VGBVQP.js";import"./chunk-W4NLJ2YK.js";import"./chunk-5TKHN3A5.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{DEPARTMENTS_PATH,ORG_MASTER_LIMIT,
5
5
  POSITIONS_PATH}from"./chunk-4DOPQ74T.js";import{ResolveError,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,
6
6
  ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs from"fs";var ASSIGNMENT_COLUMNS=["id","department_name","position_name","start_date","end_date","is_primary","is_current","is_approval_route","effective_status"];function assignmentRows(body){const response=isRecord(body)&&"response"in body?body["response"]:body;const list=isRecord(response)?response["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u6240\u5C5E\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
@@ -232,8 +232,8 @@ items,available);const unknownSeats=[...new Set(items.filter(item=>item.effect==
232
232
  ${shortages.join("\n ")}`,"\u30B7\u30FC\u30C8\u3092\u8FFD\u52A0\u3059\u308B\uFF08\u753B\u9762\u306E\u300C\u30E9\u30A4\u30BB\u30F3\u30B9\u7BA1\u7406\u300D\uFF09\u304B\u3001\u5272\u308A\u5F53\u3066\u308B\u4EBA\u6570\u3092\u6E1B\u3089\u3057\u3066\u304B\u3089\u6253\u3061\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}const notes=[`${items.length} \u4EF6\u306E\u6A5F\u80FD\u6A29\u9650\u3092\u5909\u3048\u307E\u3059\uFF08\u5DE6\u304C\u4ECA\u306E\u5024\u3002\u30E9\u30A4\u30BB\u30F3\u30B9\u306F\u9001\u308B\u524D\u306E\u898B\u8FBC\u307F\u3067\u3001\u6700\u7D42\u7684\u306A\u5224\u5B9A\u306F\u30B5\u30FC\u30D0\u304C\u3057\u307E\u3059\uFF09:`];
233
233
  for(const item of items){const who=item.userName!==null&&item.userName!==item.user?`${item.userName}\uFF08${item.user}\uFF09`:item.user;notes.push(` ${where(item)}${who} ${item.featureLabel}: ${item.from} \u2192 ${item.level}\uFF08${EFFECT_TEXT[item.effect]}\uFF09`)}const seatLicensed=new Set(usage.map(([code])=>code));for(const[feature,row]of usage){const mine=items.filter(item=>item.feature===feature);const delta=mine.filter(item=>item.effect==="release").length-mine.filter(item=>item.effect===
234
234
  "assign").length;if(delta!==0&&row.available!==null){notes.push(`\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u7A7A\u304D: ${mine[0]?.featureLabel??feature} ${row.available} \u2192 ${row.available+delta}`)}}const unmoved=[...new Set(items.filter(item=>item.effect!=="unchanged"&&seatLicensed.has(item.feature)&&!permissionMovesSeat(item.feature)).map(item=>item.featureLabel))];if(unmoved.length>0){notes.push(`${unmoved.join("\u30FB")} \u306F\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u5BFE\u8C61\u3067\u3059\u304C\u3001\u30B5\u30FC\u30D0\u306F\u6A29\u9650\u306E\u5909\u66F4\u3067\u30E9\u30A4\u30BB\u30F3\u30B9\u3092\u5272\u308A\u5F53\u3066\u3082\u89E3\u9664\u3082\u3057\u307E\u305B\u3093\uFF08\u753B\u9762\u304B\u3089\u5909\u3048\u305F\u5834\u5408\u3082\u540C\u3058\u3067\u3059\uFF09\u3002`)}
235
- if(unknownSeats.length>0){notes.push(`${unknownSeats.join("\u30FB")} \u306F\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u7A7A\u304D\u3092\u8AAD\u3081\u306A\u304B\u3063\u305F\u305F\u3081\u3001\u7A7A\u304D\u306E\u4E8B\u524D\u691C\u67FB\u3092\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u8DB3\u308A\u306A\u3051\u308C\u3070\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF09\u3002`)}if(items.some(item=>item.effect==="kept"&&item.level==="none")){notes.push("\u300C\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u5272\u5F53\u306F\u6B8B\u308B\u300D\u306E\u884C\u306F\u3001\u6A29\u9650\u3092 none \u306B\u3057\u3066\u3082\u5272\u5F53\u304C\u5916\u308C\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u304C\u3053\u306E\u5909\u66F4\u3067\u30E9\u30A4\u30BB\u30F3\
236
- \u30B9\u3092\u52D5\u304B\u3055\u306A\u3044\u305F\u3081\uFF09\u3002")}const planned={items,notes};PLANNED.set(input,planned);return planned}function isUpdateBody(body){return isRecord(body)&&body["permissionUpdate"]===true&&Array.isArray(body["done"])}function writeAck(body){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError("\u6A5F\u80FD\u6A29\u9650\u306E\u66F4\u65B0\u306E\u5FDC\u7B54\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
235
+ if(unknownSeats.length>0){notes.push(`${unknownSeats.join("\u30FB")} \u306F\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u7A7A\u304D\u3092\u8AAD\u3081\u306A\u304B\u3063\u305F\u305F\u3081\u3001\u7A7A\u304D\u306E\u4E8B\u524D\u691C\u67FB\u3092\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u8DB3\u308A\u306A\u3051\u308C\u3070\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF09\u3002`)}if(items.some(item=>item.effect==="kept"&&item.level==="none")){notes.push("\u300C\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u5272\u5F53\u306F\u6B8B\u308B\u300D\u306E\u884C\u306F\u3001\u6A29\u9650\u3092 none \u306B\u3057\u3066\u3082\u5272\u5F53\u304C\u5916\u308C\u307E\u305B\u3093\uFF08\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u8981\u3089\u306A\u3044\u30EC\u30D9\u30EB\
236
+ \u304B\u3089\u306E\u5909\u66F4\u306A\u306E\u3067\u3001\u30B5\u30FC\u30D0\u306F\u30E9\u30A4\u30BB\u30F3\u30B9\u3092\u52D5\u304B\u3057\u307E\u305B\u3093\uFF09\u3002")}const planned={items,notes};PLANNED.set(input,planned);return planned}function isUpdateBody(body){return isRecord(body)&&body["permissionUpdate"]===true&&Array.isArray(body["done"])}function writeAck(body){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError("\u6A5F\u80FD\u6A29\u9650\u306E\u66F4\u65B0\u306E\u5FDC\u7B54\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
237
237
  const rest={...body};delete rest["result"];return rest}function revertCommand(userId,feature,level){return`twp user permission update ${shellQuote(userId)} --feature ${shellQuote(feature)} --level ${shellQuote(level)}`}function revertLines(done){return done.filter(item=>item.effect!=="unchanged").map(item=>` ${revertCommand(item.userId,item.feature,item.from)}${item.line===null?"":` # ${item.line} \u884C\u76EE`}`)}function reasonOf(err){if(err instanceof ApiError){const licenseErrors=err.body?.["\
238
238
  license_errors"];if(Array.isArray(licenseErrors)&&licenseErrors.length>0)return licenseErrors.map(String).join(" ")}return err.message}async function runUpdate(input,ctx){const{items}=await planChanges(input,ctx);const send=pacedSender(ctx);const done=[];for(const[index,item]of items.entries()){let response;try{response=writeAck(await send(rowPlan2(item)))}catch(err){const unsent=items.slice(index+1);const rejected=err instanceof ApiError&&REJECTED_BEFORE_WRITE.has(err.status);const written=rejected?
239
239
  "\u3053\u306E\u4EF6\u306F\u66F8\u304D\u8FBC\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002":`\u66F8\u304D\u8FBC\u307E\u308C\u305F\u304B\u3069\u3046\u304B\u5206\u304B\u308A\u307E\u305B\u3093\u3002twp user permission list ${shellQuote(item.userId)} \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002`;if(items.length===1){if(!rejected)ctx.warn(`${item.featureLabel} \u306E\u5909\u66F4: ${written}`);throw err}const lines=[`\u6A5F\u80FD\u6A29\u9650\u306E\u5909\u66F4\u306F ${where(item)}${item.
@@ -262,9 +262,9 @@ te",summary:"\u6A5F\u80FD\u6A29\u9650\u3092\u5909\u3048\u308B\uFF081\u4EBA\u30FB
262
262
  \uFF08--dry-run \u306F\u3053\u3053\u307E\u3067\u3067\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002\u5272\u308A\u5F53\u3066\u308B\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u7A7A\u304D\u304C\u8DB3\u308A\u306A\u3044\u6A5F\u80FD\u304C\u3042\u308C\u3070\u3001\u6A5F\u80FD\u540D\u3068\u4E0D\u8DB3\u6570\u3092\u51FA\u3057\u3066
263
263
  1\u4EF6\u3082\u9001\u3089\u305A\u306B\u7D42\u4E86\u30B3\u30FC\u30C9 2 \u3067\u7D42\u308F\u308A\u307E\u3059\u3002
264
264
 
265
- \u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u5272\u5F53\u30FB\u89E3\u9664\u306F\u30B5\u30FC\u30D0\u304C\u6A29\u9650\u306E\u5909\u66F4\u306B\u5408\u308F\u305B\u3066\u884C\u3044\u307E\u3059\u3002\u3044\u307E\u30B5\u30FC\u30D0\u304C\u30E9\u30A4\u30BB\u30F3\u30B9\u3092\u52D5\u304B\u3059\u306E\u306F
266
- \u554F\u3044\u5408\u308F\u305B\u7BA1\u7406\u30FB\u30B3\u30F3\u30C6\u30F3\u30C4\u7BA1\u7406\u30FB\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\uFF08admin\uFF09\u30FB\u30D2\u30A2\u30EA\u30F3\u30B0\uFF08admin\uFF09\u3060\u3051\u3067\u3001\u305D\u308C\u4EE5\u5916\u306E\u6A5F\u80FD\u306F
267
- \u6A29\u9650\u3092\u5909\u3048\u3066\u3082\u30E9\u30A4\u30BB\u30F3\u30B9\u306F\u5272\u308A\u5F53\u3066\u3082\u89E3\u9664\u3082\u3055\u308C\u307E\u305B\u3093\uFF08\u753B\u9762\u304B\u3089\u5909\u3048\u305F\u5834\u5408\u3082\u540C\u3058\u3067\u3059\uFF09\u3002
265
+ \u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u5272\u5F53\u30FB\u89E3\u9664\u306F\u30B5\u30FC\u30D0\u304C\u6A29\u9650\u306E\u5909\u66F4\u306B\u5408\u308F\u305B\u3066\u884C\u3044\u307E\u3059\u3002\u30E9\u30A4\u30BB\u30F3\u30B9\u304C\u8981\u308B\u30EC\u30D9\u30EB\u3078\u5909\u3048\u308B\u3068\u5272\u308A\u5F53\u3066\u3001
266
+ \u305D\u3053\u304B\u3089\u5916\u3059\u3068\u89E3\u9664\u3057\u307E\u3059\uFF08Wiki\u30FB\u9867\u5BA2\u306E viewer \u3084\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30FB\u30D2\u30A2\u30EA\u30F3\u30B0\u306E member \u306E\u3088\u3046\u306A\u7121\u511F\u306E\u30EC\u30D9\u30EB\u306F
267
+ \u5E2D\u3092\u4F7F\u3044\u307E\u305B\u3093\u3002\u753B\u9762\u304B\u3089\u5909\u3048\u305F\u5834\u5408\u3082\u540C\u3058\u3067\u3059\uFF09\u3002
268
268
 
269
269
  \u9001\u4FE1\u306F1\u4EF6\uFF081\u4EBA\u306E1\u6A5F\u80FD\uFF09\u305A\u3064\u3067\u3001\u5931\u6557\u3057\u305F\u3089\u305D\u3053\u3067\u6B62\u3081\u3001\u6210\u529F\u30FB\u5931\u6557\u30FB\u672A\u9001\u4FE1\u306E\u4EF6\u3068\u3001\u6210\u529F\u3057\u305F\u4EF6\u3092\u5143\u306B\u623B\u3059\u30B3\u30DE\u30F3\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
270
270
  ${REFLECT_NOTE}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tocca-systems/twp-cli",
3
- "version": "0.93.0",
3
+ "version": "0.94.1",
4
4
  "description": "TWP CLI — Tocca Working Platform の CLI 型統合インターフェース(AIエージェントハーネス)",
5
5
  "type": "module",
6
6
  "bin": {