@tocca-systems/twp-cli 0.96.1 → 0.97.0
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.
- package/CHANGELOG.public.md +10 -0
- package/README.md +32 -0
- package/command-model/_routes.json +303 -5
- package/command-model/accounting-master.json +22 -0
- package/command-model/agent-loop.json +33 -3
- package/command-model/ai-token-usage.json +1 -1
- package/command-model/ai-training-attempt.json +9 -0
- package/command-model/ai-training-program.json +7 -0
- package/command-model/analysis-alert-threshold.json +7 -0
- package/command-model/analysis-page-access-rule.json +2 -2
- package/command-model/analysis.json +2 -1
- package/command-model/announcement.json +4 -0
- package/command-model/attendance-report-reason-detail.json +1 -1
- package/command-model/attendance-report-reason.json +1 -1
- package/command-model/attendance-report.json +1 -1
- package/command-model/audit-log.json +2 -2
- package/command-model/badge.json +2 -0
- package/command-model/budget.json +4 -4
- package/command-model/cash-flow.json +6 -0
- package/command-model/chat-channel.json +8 -3
- package/command-model/chat-mention-group.json +1 -1
- package/command-model/chat-message.json +17 -2
- package/command-model/chat-presence.json +11 -0
- package/command-model/chat-scheduled-message.json +9 -0
- package/command-model/chat.json +6 -0
- package/command-model/cli-tool-catalog.json +6 -0
- package/command-model/commuting-expense.json +1 -0
- package/command-model/company.json +3 -2
- package/command-model/container-agent-schedule.json +14 -0
- package/command-model/contract.json +4 -3
- package/command-model/customer-people.json +1 -1
- package/command-model/department.json +3 -3
- package/command-model/deposit.json +2 -1
- package/command-model/device-token.json +7 -0
- package/command-model/domain-knowledge-doc.json +3 -3
- package/command-model/dynamo-attachment.json +1 -0
- package/command-model/dynamo-inquiry.json +3 -1
- package/command-model/dynamo-support.json +1 -1
- package/command-model/estimate-case-document.json +3 -2
- package/command-model/estimate.json +11 -5
- package/command-model/evaluation.json +3 -3
- package/command-model/expense-report.json +19 -0
- package/command-model/expense-settings.json +1 -1
- package/command-model/faq.json +3 -2
- package/command-model/goal-sheet.json +5 -4
- package/command-model/google-auth.json +1 -1
- package/command-model/hearing.json +1 -1
- package/command-model/hr-checklist.json +1 -0
- package/command-model/index.json +81 -41
- package/command-model/inquiry-routing.json +3 -1
- package/command-model/invoice.json +3 -3
- package/command-model/license-type.json +2 -2
- package/command-model/master-support.json +3 -3
- package/command-model/master-tenant.json +4 -4
- package/command-model/media-file.json +3 -2
- package/command-model/media-folder.json +3 -3
- package/command-model/meeting-template.json +2 -2
- package/command-model/meeting.json +6 -4
- package/command-model/microsoft-auth.json +1 -1
- package/command-model/microsoft-graph-proxy-v2.json +42 -0
- package/command-model/my-ai-training.json +7 -0
- package/command-model/note.json +1 -1
- package/command-model/notification.json +1 -1
- package/command-model/organization-announcement.json +3 -2
- package/command-model/private-agent-loop.json +21 -6
- package/command-model/private-task.json +4 -2
- package/command-model/profit-analysis.json +2 -2
- package/command-model/project-evaluation.json +3 -3
- package/command-model/project-inventory-continuation.json +6 -0
- package/command-model/project-inventory-overview.json +6 -0
- package/command-model/project-inventory-request.json +7 -0
- package/command-model/project-inventory-settings.json +7 -0
- package/command-model/project-member.json +3 -3
- package/command-model/project-status-report-project.json +6 -0
- package/command-model/project-status-report-settings.json +7 -0
- package/command-model/project-task-attachment.json +7 -0
- package/command-model/project-task-category.json +2 -2
- package/command-model/project-task-label.json +2 -2
- package/command-model/project-task-link.json +3 -2
- package/command-model/project-task-milestone.json +2 -2
- package/command-model/project-task-status.json +2 -2
- package/command-model/project-task-type.json +2 -2
- package/command-model/project-task-version.json +2 -2
- package/command-model/project-task-watcher.json +2 -2
- package/command-model/project-task.json +3 -3
- package/command-model/project-team-chat.json +8 -0
- package/command-model/project.json +5 -5
- package/command-model/purchase-ai-field-mapping.json +2 -2
- package/command-model/purchase-document.json +1 -0
- package/command-model/purchase.json +2 -2
- package/command-model/receivable.json +1 -1
- package/command-model/recreation-club.json +11 -0
- package/command-model/report.json +5 -5
- package/command-model/retrospective.json +1 -1
- package/command-model/role-template.json +1 -1
- package/command-model/sales-default-recipient-set.json +10 -0
- package/command-model/sales-pdf.json +2 -1
- package/command-model/sales-recent-recipient.json +6 -0
- package/command-model/sales-setting.json +11 -0
- package/command-model/skill-analytics.json +1 -1
- package/command-model/skill-evaluation-record.json +1 -0
- package/command-model/skill-micro-feedback.json +1 -0
- package/command-model/skill.json +1 -1
- package/command-model/sns-connection.json +10 -0
- package/command-model/staff-kpi-setting.json +1 -1
- package/command-model/staff-kpi.json +1 -0
- package/command-model/staffing-board-cell.json +7 -0
- package/command-model/staffing-board-note.json +8 -0
- package/command-model/staffing-board-snapshot.json +10 -0
- package/command-model/staffing-board-tentative-assignment.json +12 -0
- package/command-model/staffing-board-tentative-import.json +7 -0
- package/command-model/staffing-plan.json +4 -2
- package/command-model/statutory-rate-set.json +14 -0
- package/command-model/supplier-payment.json +2 -2
- package/command-model/survey-tracker.json +1 -1
- package/command-model/survey.json +1 -0
- package/command-model/teams-link.json +9 -0
- package/command-model/tenant-rate-override.json +8 -0
- package/command-model/tenant-settings.json +2 -2
- package/command-model/token.json +1 -1
- package/command-model/training-attendance.json +1 -1
- package/command-model/training-session.json +1 -1
- package/command-model/unified-search.json +1 -1
- package/command-model/user-api-key.json +2 -2
- package/command-model/user-contract-type.json +2 -2
- package/command-model/user-group.json +1 -0
- package/command-model/user-invitation.json +2 -2
- package/command-model/user-list-display-setting.json +7 -0
- package/command-model/user-list-item-order.json +7 -0
- package/command-model/user-management.json +3 -3
- package/command-model/user-recent-work.json +8 -0
- package/command-model/video-generation.json +2 -2
- package/command-model/wiki-collection.json +2 -2
- package/command-model/wiki.json +3 -1
- package/command-model/worker-agent-run.json +1 -0
- package/command-model/worker-agent.json +3 -3
- package/command-model/workflow-approval-delegation.json +1 -0
- package/command-model/workflow-approval.json +1 -0
- package/command-model/workflow-attachment-pdf-preview.json +6 -0
- package/command-model/workflow-comment-attachment.json +8 -0
- package/command-model/workflow-estimate-input.json +9 -0
- package/command-model/workflow-instance.json +3 -2
- package/command-model/workflow.json +3 -2
- package/dist/{app-JXSWS4S5.js → app-WICUAA5V.js} +2 -2
- package/dist/{schedule-def-command-OFCA5VH3.js → chunk-76WVQ45F.js} +2 -2
- package/dist/chunk-B2D2NO5H.js +13 -0
- package/dist/{chunk-TESDN34O.js → chunk-J6A575H2.js} +12 -9
- package/dist/chunk-RFXIPNKG.js +56 -0
- package/dist/cli.js +24 -6
- package/dist/{commands-LQNIOT7B.js → commands-HKSBT5YG.js} +32 -30
- package/dist/{completion-TQIXRYIP.js → completion-2JMIYGIB.js} +5 -5
- package/dist/{dispatch-E3WXF4PH.js → dispatch-3TVY2VVM.js} +1 -1
- package/dist/{plan-submit-JKLAR5US.js → plan-submit-4LAFJQP4.js} +1 -1
- package/dist/schedule-def-command-QZB4FGWV.js +3 -0
- package/dist/trigger-command-35FDCYT7.js +77 -0
- package/package.json +1 -1
- package/command-model/prospect-activity.json +0 -10
- package/dist/chunk-FKTYYARF.js +0 -51
- package/dist/chunk-TJQZYYG3.js +0 -13
|
@@ -2,7 +2,7 @@ import { createRequire as __twpCreateRequire } from 'node:module';
|
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
3
|
import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-6M5NUVJJ.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-MBPJV745.js";import{claudeConfigDir,resolveDetectDeps}from"./chunk-5SONMN6K.js";import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import{LoopSettingsApplier,renderStepBudget}from"./chunk-5YJSWKQG.js";
|
|
4
4
|
import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-3OCV6SOR.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import{NO_PLAN_SESSION,RECENT_ADVANCE_WINDOW_HOURS,buildDynamicBlocks,buildRecentCandidateIndex,createItem,enqueueBlockerRecovery,enqueueDevVerifyForMerged,enqueueReleasePartialMergeRerun,enqueueReleasePhase5Recovery,fileSkillNames,findRecentCandidate,formatInflightEntry,formatPlanResultLine,formatRecentAdvance,formatResumeHold,inflightEntries,inflightStaleHours,
|
|
5
|
-
openPlanSession,parseOutcomeCode,parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,resolveResumeHold,shouldSuppressForResume,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-
|
|
5
|
+
openPlanSession,parseOutcomeCode,parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,resolveResumeHold,shouldSuppressForResume,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-J6A575H2.js";import"./chunk-VRBI2NPI.js";import{duplicateTaskKeyDropReason,excludedKeyInArgs,extractPlanJson,parseOpsCount,parsePlanExcludeKeys,placeholderTaskKey,releaseDeployDropReason,stepToItem,zeroTargetDropReasons}from"./chunk-HUKKZ252.js";
|
|
6
6
|
import{redactLoopOutput}from"./chunk-VEEZJNOB.js";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{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-BD7O73GK.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{
|
|
@@ -99,12 +99,12 @@ continue}try{const ageDays=(now-fs4.statSync(file).mtimeMs)/864e5;if(ageDays>thi
|
|
|
99
99
|
continue}const{run_id:runId,...rest}=redactStashedPayload(payload);const res=await this.api.update(itemId,rest,runId||this.config.runId);if(res.ok){fs4.rmSync(file,{force:true});this.log.log(` \u2705 \u5B9F\u884C\u7D50\u679C\u3092\u518D\u9001\u3057\u307E\u3057\u305F: item=${itemId}\uFF08status=${payload.status}\uFF09`);if(payload.status==="completed")recorded.push(itemId)}else if(res.status===409){fs4.rmSync(file,{force:true});this.log.log(` \u26A0\uFE0F \u518D\u9001\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08409\u30FB\u65E2\u306B\u5225\u306E\u30E9\u30F3\u30CA\u30FC/\u5225\u306E run \u304C\u4FDD\u6301\uFF09: item=${itemId}\
|
|
100
100
|
\u2192 \u7D50\u679C\u306F\u7834\u68C4\u3057\u307E\u3059`)}else if(res.status!==null&&res.status>=400&&res.status<500&&res.status!==408&&res.status!==429){fs4.rmSync(file,{force:true});this.log.log(` \u26D4 \u30B5\u30FC\u30D0\u306B\u6052\u4E45\u7684\u306B\u62D2\u5426\u3055\u308C\u305F\u305F\u3081\u7834\u68C4\u3057\u307E\u3059\uFF08http=${res.status}\uFF09: item=${itemId}`)}else{this.log.log(` \u26A0\uFE0F \u518D\u9001\u306B\u5931\u6557\uFF08${describeError(res)}\uFF09: item=${itemId}\u3002\u6B21\u30B5\u30A4\u30AF\u30EB\u3067\u518D\u8A66\
|
|
101
101
|
\u884C\u3057\u307E\u3059`)}}return recorded}};var PLAN_SUPPRESS_REASONS={"step \u306E\u5F62\u304C\u4E0D\u6B63":"invalid_step","\u30BF\u30B9\u30AF\u30AD\u30FC\u304C\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0":"placeholder_key","\u5BFE\u8C610\u4EF6":"zero_target","\u4ED6\u30E9\u30F3\u30CA\u30FC\u304C\u51E6\u7406\u4E2D":"inflight","\u65E2\u306B\u30AD\u30E5\u30FC\u5F85\u3061":"already_pending","\u540C\u4E00\u8A08\u753B\u5185\u306E\u91CD\u8907\u30AD\u30FC":"duplicate_in_plan","\u4EBA\u306B\u30DC\u30FC\u30EB\u304C\u3042\u308B":"human_ball","\u524D\u56DE\u304C\u72B6\u614B\u3092\
|
|
102
|
-
\u9032\u3081\u305F":"recently_advanced","\u518D\u958B\u6761\u4EF6\u304C\u672A\u6210\u7ACB":"resume_pending","\u6642\u9593\u5E2F\u30B2\u30FC\u30C8":"schedule_gate","\u8A08\u753B\u30ED\u30C3\u30AF\u55AA\u5931\u3067\u672A\u51E6\u7406":"lock_lost","\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C":"exclusive_skill"
|
|
103
|
-
var MAX_STEPS=100;var MAX_SCHEDULED=100;var MAX_CONTRACT_LINES=20;var MAX_CONTRACT_LINE_CHARS=1e3;var MAX_LABEL_CHARS=300;var MAX_DETAIL_CHARS=500;var MAX_TASK_KEY_CHARS=64;function clip(value,max){const s=(value??"").trim();return s===""?null:s.slice(0,max)}function dropToStep(drop){const base={task_key:clip(drop.task_key,MAX_TASK_KEY_CHARS),label:clip(drop.skill,MAX_LABEL_CHARS),item_id:null};
|
|
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){
|
|
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?.
|
|
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.
|
|
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.
|
|
102
|
+
\u9032\u3081\u305F":"recently_advanced","\u518D\u958B\u6761\u4EF6\u304C\u672A\u6210\u7ACB":"resume_pending","\u6642\u9593\u5E2F\u30B2\u30FC\u30C8":"schedule_gate","\u8A08\u753B\u30ED\u30C3\u30AF\u55AA\u5931\u3067\u672A\u51E6\u7406":"lock_lost","\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C":"exclusive_skill","\u6761\u4EF6\u30C8\u30EA\u30AC\u30FC\u306E\u6295\u5165\u30D6\u30ED\u30C3\u30AF":"trigger_blocked"};var PLAN_GUARD_REASON_SUFFIX=" \u306E\u7A7A\u632F\u308A\u9632\u6B62";
|
|
103
|
+
var PLAN_GUARD_REASON_CODE="release_deploy_guard";var ENQUEUE_ERROR_PREFIX="\u6295\u5165\u30A8\u30E9\u30FC: ";var MAX_STEPS=100;var MAX_SCHEDULED=100;var MAX_CONTRACT_LINES=20;var MAX_CONTRACT_LINE_CHARS=1e3;var MAX_LABEL_CHARS=300;var MAX_DETAIL_CHARS=500;var MAX_TASK_KEY_CHARS=64;function clip(value,max){const s=(value??"").trim();return s===""?null:s.slice(0,max)}function dropToStep(drop){const base={task_key:clip(drop.task_key,MAX_TASK_KEY_CHARS),label:clip(drop.skill,MAX_LABEL_CHARS),item_id:null};
|
|
104
|
+
if(drop.reason.startsWith(ENQUEUE_ERROR_PREFIX)){return{...base,outcome:"error",reason:"enqueue_error",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){
|
|
105
|
+
const lines=[...output.matchAll(/^.*\b[A-Z][A-Z0-9_]*_RESULT:.*$/gm)].map(m=>m[0].trim().slice(0,MAX_CONTRACT_LINE_CHARS)).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?.
|
|
106
|
+
metrics;const steps=[...input.enqueuedSteps.map(s=>({outcome:"enqueued",task_key:clip(s.task_key,MAX_TASK_KEY_CHARS),label:clip(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.
|
|
107
|
+
durationMs===null?null:Math.max(0,Math.trunc(input.durationMs)),final_report:output.trim()===""?null:truncateResult(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?.
|
|
@@ -176,10 +176,11 @@ const enqueuedLines=[];const ai=config.ai;let count=0;for(const row of due.rows)
|
|
|
176
176
|
\u5B9A\u671F\u30B9\u30AD\u30C3\u30D7: ${row.skill} \u306F\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u3067\u65E2\u306B\u6295\u5165\u3057\u307E\u3057\u305F\uFF08\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306F\u540C\u66421\u672C\uFF09 | ${prompt}`);continue}const queuedSkills=await exclusiveInflight();if(queuedSkills===null){log.log(` \u26A0\uFE0F ${row.skill} \u306E\u540C\u6642\u5B9F\u884C\u30AC\u30FC\u30C9\u3092\u8A55\u4FA1\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u30AD\u30E5\u30FC\u4E00\u89A7\u306E\u53D6\u5F97\u5931\u6557\uFF09\u2192 \u6295\u5165\u306F\u6B62\u3081\u307E\u305B\u3093`)}else if(queuedSkills.
|
|
177
177
|
has(exclusiveSkill)){log.log(` \u5B9A\u671F\u30B9\u30AD\u30C3\u30D7: ${row.skill} \u306F\u65E2\u306B\u30AD\u30E5\u30FC/\u5B9F\u884C\u4E2D\u3067\u3059\uFF08\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306F\u540C\u66421\u672C\uFF09 | ${prompt}`);continue}}const claim=await this.schedule.claimWindow(row);if(claim==="taken"){log.log(` \u5B9A\u671F\u30B9\u30AD\u30C3\u30D7: \u4ED6\u6A5F\u304C\u3053\u306E\u67A0\u3092\u6D88\u5316\u6E08\u307F\u3067\u3059 | [${row.scheduleId}] ${row.windowKey}`);continue}
|
|
178
178
|
if(claim==="error"){log.log(` \u26A0\uFE0F \u5B9A\u671F\u67A0\u306E\u7372\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u3053\u306E\u67A0\u306F\u672A\u6D88\u5316\u3068\u3057\u3066\u6B21\u30B5\u30A4\u30AF\u30EB\u3078\u9001\u308A\u307E\u3059 | [${row.scheduleId}] ${row.windowKey}`);continue}const category=ai.categoryForSkill(row.skill);const label=`[\u5B9A\u671F][${row.priority}] ${row.label} #ai:${category}`.slice(0,200);const primary=ai.selectPrimary(category,row.skill,row.priority,label);
|
|
179
|
-
const{itemId,detail}=await createItem(this.deps.api,{label,prompt,...primary===""?{}:{ai_type:primary},...row.requiredPlatforms.length>0?{required_platforms:row.requiredPlatforms}:{}});if(
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
179
|
+
const{itemId,detail,blocked}=await createItem(this.deps.api,{label,prompt,...primary===""?{}:{ai_type:primary},...row.requiredPlatforms.length>0?{required_platforms:row.requiredPlatforms}:{}});if(blocked){log.log(` \u23ED \u5B9A\u671F\u30BF\u30B9\u30AF\u306E\u6295\u5165\u3092\u843D\u3068\u3057\u307E\u3057\u305F\uFF08[${row.scheduleId}] ${row.windowKey}\uFF09: ${detail}`);await this.schedule.releaseWindow(row.scheduleId,row.windowKey,"\u6761\u4EF6\u30C8\u30EA\u30AC\u30FC\u306E\u6295\u5165\u30D6\u30ED\u30C3\u30AF");
|
|
180
|
+
continue}if(!itemId){log.log(` \u26D4 \u5B9A\u671F\u30BF\u30B9\u30AF\u306E\u30A8\u30F3\u30AD\u30E5\u30FC\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08[${row.scheduleId}] ${row.windowKey}\uFF09: ${detail}`);if(detail.startsWith("item_id \u3092\u8AAD\u3081\u307E\u305B\u3093")){log.log(" \u30A2\u30A4\u30C6\u30E0\u306F\u4F5C\u6210\u3055\u308C\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002**\u3053\u306E\u67A0\u306F failed \u3068\u3057\u3066\u8FD4\u3057\u307E\u305B\u3093**")}else{
|
|
181
|
+
await this.schedule.releaseWindow(row.scheduleId,row.windowKey,"\u30A8\u30F3\u30AD\u30E5\u30FCAPI\u304C\u5FDC\u7B54\u3057\u306A\u3044")}continue}let recorded=false;for(let attempt=1;attempt<=3&&!recorded;attempt++){recorded=await this.schedule.record(row.scheduleId,row.windowKey,"enqueued",{itemId});if(!recorded&&attempt<3)await this.sleep(3e3)}if(!recorded){log.log(` \u26D4 \u5B9A\u671F\u67A0\u3078\u306E item_id \u8A18\u9332\u306B3\u56DE\u5931\u6557\u3057\u307E\u3057\u305F\uFF08[${row.scheduleId}\
|
|
182
|
+
] ${row.windowKey} \u2192 ${itemId}\uFF09`);log.log(" **\u30EA\u30FC\u30B9\u671F\u9650\u5F8C\u306B\u540C\u3058\u67A0\u304C\u518D\u6295\u5165\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059**\u3002\u5B9A\u671F\u67A0\u304C\u672C\u756A\u30EA\u30EA\u30FC\u30B9\u306A\u3089\u4E8C\u91CD\u5B9F\u884C\u306B\u306A\u308A\u307E\u3059")}if(exclusiveSkill!==null)exclusiveEnqueued.add(exclusiveSkill);if(!midcycle)this.planRunScheduled.push({schedule_id:row.scheduleId,item_id:itemId});enqueuedLines.
|
|
183
|
+
push(`- [${row.priority}] ${row.label} \u2192 ${prompt}`);log.log(` \u5B9A\u671F\u30A8\u30F3\u30AD\u30E5\u30FC: [${row.priority}] ${row.label} \u2192 ${prompt}`);count+=1}if(count>0){log.log(midcycle?`\u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\uFF08\u4E2D\u9593\u5224\u5B9A\uFF09: ${count}\u4EF6\u3092\u30AD\u30E5\u30FC\u306B\u6295\u5165\u3057\u307E\u3057\u305F`:`\u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB: ${count}\u4EF6\u3092\u30AD\u30E5\u30FC\u306B\u6295\u5165\u3057\u307E\u3057\u305F`);
|
|
183
184
|
this.midcycleEnqueued+=count}else if(!midcycle){log.log("\u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB: \u4ECA\u30B5\u30A4\u30AF\u30EB\u3067\u767A\u706B\u3057\u305F\u5B9A\u671F\u30BF\u30B9\u30AF\u306F\u3042\u308A\u307E\u305B\u3093")}if(!midcycle){const file=path4.join(this.deps.config.logDir,`schedule-enqueued-${this.timestamp}.txt`);try{fs6.mkdirSync(path4.dirname(file),{recursive:true});fs6.writeFileSync(file,enqueuedLines.join("\n"))}catch{}}}async maybeEnqueueDueMidcycle(){const res=await this.
|
|
184
185
|
deps.api.reclaim();if(!res.ok){this.deps.log.log(` \u26A0\uFE0F \u6B7B\u3093\u3060\u30E9\u30F3\u30CA\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u56DE\u53CEAPI\u304C\u5931\u6557\u3057\u307E\u3057\u305F\uFF08${describeError(res)}\uFF09`)}if(this.midcycleEnqueued>=this.deps.config.scheduleMidcycleMax)return;await this.enqueueDueScheduled(true)}async recordStandalonePlanRun(result){const{api,config,log}=this.deps;const res=await api.planRun(config.runnerId,config.runId,{...standaloneRecord(result,this.planRunScheduled)});
|
|
185
186
|
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(){
|
|
@@ -226,15 +227,15 @@ skill} \u2014 ${item.task_key} \u306F ${formatResumeHold(hold)} | ${item.label}`
|
|
|
226
227
|
skill} \u2014 ${gate.reason} | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"\u6642\u9593\u5E2F\u30B2\u30FC\u30C8"});continue}if(this.planLock.isLost()){log.log(` \u26D4 \u30A8\u30F3\u30AD\u30E5\u30FC\u4E2D\u306B\u8A08\u753B\u30ED\u30C3\u30AF\u3092\u5931\u3044\u307E\u3057\u305F\uFF08reason=${this.planLock.lostReasonText()}\uFF09\u2192 \u3053\u3053\u3067\u4E2D\u6B62\u3057\u307E\u3059\uFF08\u6295\u5165\u6E08\u307F: ${enqueued}\u4EF6\uFF09`);lockLostMidway=true;
|
|
227
228
|
for(const rest of plan.steps.slice(stepIndex)){dropped.push({skill:String(rest.skill??""),task_key:stepToItem(rest,config.ai)?.task_key||null,reason:"\u8A08\u753B\u30ED\u30C3\u30AF\u55AA\u5931\u3067\u672A\u51E6\u7406"})}break}const exclusiveSkill=config.ai.isExclusiveSkill(step.skill)?normalizeSkillName(step.skill):null;if(exclusiveSkill!==null){if(exclusiveEnqueued.has(exclusiveSkill)){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C\uFF09: ${step.
|
|
228
229
|
skill} \u2014 \u540C\u3058\u8A08\u753B\u306B\u65E2\u306B1\u4EF6\u3042\u308A\u307E\u3059 | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C"});continue}const queuedSkills=await exclusiveInflight();if(queuedSkills?.has(exclusiveSkill)){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C\uFF09: ${step.skill} \u2014 \u65E2\u306B\u30AD\
|
|
229
|
-
\u30E5\u30FC/\u5B9F\u884C\u4E2D\u306E\u305F\u3081\u7A4D\u307F\u307E\u305B\u3093 | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C"});continue}}const{itemId,detail}=await createItem(this.deps.api,item);if(
|
|
230
|
-
task_key)enqueuedTaskKeys.add(item.task_key)}else{dropped.push({skill:step.skill,task_key:item.task_key||null,reason:`\u6295\u5165\u30A8\u30E9\u30FC: ${String(detail).slice(
|
|
231
|
-
unchecked,...lockLostMidway?{aborted:true}:{}};recordResult(summary);setRecord("enqueued",summary);return"ok"}async snapshotDynamicBlocks(taskStatus){const{config,log,api}=this.
|
|
232
|
-
advancing,staleHours:inflightStaleHours(config.aiTimeoutSec)});const missing=unavailableChecks(blocks);if(missing.length>0){log.log(` \u26A0\uFE0F \u63D0\u51FA\u6642\u306B\u306F\u52B9\u304B\u306A\u3044\u691C\u67FB\u304C\u3042\u308A\u307E\u3059\uFF08${missing.
|
|
233
|
-
log(` \u26A0\uFE0F \u63D0\u51FA\u6642\u306E\u691C\u67FB\u306B\u4F7F\u3046\u5B9F\u6E2C\u3092\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09\u3002\u30A8\u30F3\u30AD\u30E5\u30FC\u6642\u306E\u691C\u67FB\u306F\u52B9\u304D\u307E\u3059`);return null}}async runDequeueLoop(cycle){
|
|
234
|
-
let failed=0;let unexecuted=0;let unexecutedNeedsHuman=false;let stepNum=0;let contendedRetry=0;let undetermined=false;let stop=false;this.nothingClaimableBacklog=false;dequeue:for(;;){if(this.draining){log.log("\u30C9\u30EC\u30A4\u30F3\u8981\u6C42\u3092\u53D7\u3051\u3066\u3044\u308B\u305F\u3081\u3001\u65B0\u3057\u3044\u30A2\u30A4\u30C6\u30E0\u306F\u53D6\u5F97\u3057\u307E\u305B\u3093\u3002Phase 2 \u3092\u7D42\u4E86\u3057\u307E\u3059\u3002");
|
|
235
|
-
kind==="undetermined"){undetermined=true;break}if(claimed.kind==="contended"){contendedRetry+=1;if(contendedRetry>=config.contendedMax){log.log(` \u26A0\uFE0F contended \u304C ${contendedRetry} \u56DE\u7D9A\u304D\u307E\u3057\u305F\u3002\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u3067\u306E\u53D6\u5F97\u3092\u8AE6\u3081\u307E\u3059\uFF08\u4ED6\u6A5F\u304C\u51E6\u7406\u3092\u7D9A\u3051\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u9AD8\u3044\uFF09`);
|
|
236
|
-
|
|
237
|
-
claimed.by)}\u306E\u307F`;log.log(this.nothingClaimableBacklog?`\u3053\u306E\u6A5F\u4F53\u304C\u53D6\u308C\u308B pending \u30A2\u30A4\u30C6\u30E0\u304C\u3042\u308A\u307E\u305B\u3093\uFF08${reasons}\uFF09\u3002Phase 2 \u5B8C\u4E86\u3002\u6B21\u30B5\u30A4\u30AF\u30EB\u306F\u8A08\u753B\u3057\u307E\u3059\u3002`:"\u3053\u306E\u6A5F\u4F53\u304C\u53D6\u308C\u308B pending \u30A2\u30A4\u30C6\u30E0\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u7406\u7531\u3092\u5224\u5B9A\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u6B21\u30B5\u30A4\u30AF\u30EB\u3082\u8A08\u753B\u3057\u307E\u305B\u3093\uFF09\u3002Phase 2 \u5B8C\u4E86\u3002");
|
|
230
|
+
\u30E5\u30FC/\u5B9F\u884C\u4E2D\u306E\u305F\u3081\u7A4D\u307F\u307E\u305B\u3093 | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C"});continue}}const{itemId,detail,blocked}=await createItem(this.deps.api,item);if(blocked){dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"\u6761\u4EF6\u30C8\u30EA\u30AC\u30FC\u306E\u6295\u5165\u30D6\u30ED\u30C3\u30AF"});log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u6761\
|
|
231
|
+
\u4EF6\u30C8\u30EA\u30AC\u30FC\uFF09: \u6295\u5165\u3092\u843D\u3068\u3057\u307E\u3057\u305F: ${item.label} \u2014 ${detail}`);continue}if(itemId){enqueued+=1;enqueuedSteps.push({skill:step.skill,task_key:item.task_key||null,label:item.label,item_id:itemId});if(exclusiveSkill!==null)exclusiveEnqueued.add(exclusiveSkill);if(item.task_key)enqueuedTaskKeys.add(item.task_key)}else{dropped.push({skill:step.skill,task_key:item.task_key||null,reason:`\u6295\u5165\u30A8\u30E9\u30FC: ${String(detail).slice(
|
|
232
|
+
0,200)}`});log.log(` \u8B66\u544A: \u30A8\u30F3\u30AD\u30E5\u30FC\u5931\u6557: ${item.label} \u2014 ${detail}`)}}log.log(`\u8A08\u753B\u5B8C\u4E86: ${enqueued} \u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u306B\u8FFD\u52A0\u3057\u307E\u3057\u305F`);const summary={source,empty:false,planned:plan.steps.length,enqueued,dropped,unchecked,...lockLostMidway?{aborted:true}:{}};recordResult(summary);setRecord("enqueued",summary);return"ok"}async snapshotDynamicBlocks(taskStatus){const{config,log,api}=this.
|
|
233
|
+
deps;try{const advancing=config.operations.advancingOutcomes;const[processing,pending,recent]=await Promise.all([api.processingSnapshot(),api.pendingSnapshot(),advancing.size>0?api.completedSince(windowStartMicros(new Date)):Promise.resolve(null)]);const blocks=await buildDynamicBlocks({processing,pending,recent,taskStatus,advancing,staleHours:inflightStaleHours(config.aiTimeoutSec)});const missing=unavailableChecks(blocks);if(missing.length>0){log.log(` \u26A0\uFE0F \u63D0\u51FA\u6642\u306B\u306F\u52B9\u304B\u306A\u3044\u691C\u67FB\u304C\u3042\u308A\u307E\u3059\uFF08${missing.
|
|
234
|
+
join("\u30FB")}\u30FB\u5B9F\u6E2C\u304B\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u5199\u3057\u3092\u53D6\u308C\u305A\uFF09\u3002\u30A8\u30F3\u30AD\u30E5\u30FC\u6642\u306E\u691C\u67FB\u306F\u52B9\u304D\u307E\u3059`)}return blocks}catch(err){log.log(` \u26A0\uFE0F \u63D0\u51FA\u6642\u306E\u691C\u67FB\u306B\u4F7F\u3046\u5B9F\u6E2C\u3092\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09\u3002\u30A8\u30F3\u30AD\u30E5\u30FC\u6642\u306E\u691C\u67FB\u306F\u52B9\u304D\u307E\u3059`);return null}}async runDequeueLoop(cycle){
|
|
235
|
+
const{config,log,api,runner}=this.deps;log.separator();log.log("Phase 2: \u30AD\u30E5\u30FC\u304B\u3089\u30C7\u30AD\u30E5\u30FC\u3057\u3066\u9806\u6B21\u5B9F\u884C...");log.separator();let completed=0;let failed=0;let unexecuted=0;let unexecutedNeedsHuman=false;let stepNum=0;let contendedRetry=0;let undetermined=false;let stop=false;this.nothingClaimableBacklog=false;dequeue:for(;;){if(this.draining){log.log("\u30C9\u30EC\u30A4\u30F3\u8981\u6C42\u3092\u53D7\u3051\u3066\u3044\u308B\u305F\u3081\u3001\u65B0\u3057\u3044\u30A2\u30A4\u30C6\u30E0\u306F\u53D6\u5F97\u3057\u307E\u305B\u3093\u3002Phase 2 \u3092\u7D42\u4E86\u3057\u307E\u3059\u3002");
|
|
236
|
+
stop=true;break}const claimed=await this.claimOne();if(claimed.kind==="undetermined"){undetermined=true;break}if(claimed.kind==="contended"){contendedRetry+=1;if(contendedRetry>=config.contendedMax){log.log(` \u26A0\uFE0F contended \u304C ${contendedRetry} \u56DE\u7D9A\u304D\u307E\u3057\u305F\u3002\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u3067\u306E\u53D6\u5F97\u3092\u8AE6\u3081\u307E\u3059\uFF08\u4ED6\u6A5F\u304C\u51E6\u7406\u3092\u7D9A\u3051\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u9AD8\u3044\uFF09`);
|
|
237
|
+
undetermined=true;break}log.log(` \u2139\uFE0F \u4ED6\u306E\u30E9\u30F3\u30CA\u30FC\u304C\u5148\u306B\u53D6\u5F97\u3057\u307E\u3057\u305F\uFF08contended\u30FB${contendedRetry}\u56DE\u76EE\uFF09\u30023\u79D2\u5F8C\u306B\u518D\u8A66\u884C\u3057\u307E\u3059`);await this.sleep(3e3);continue}contendedRetry=0;this.nothingClaimableBacklog=claimed.kind==="filtered"&&claimed.by.length>0&&claimed.by.every(b=>FILTERED_REASON_LABELS.has(b));if(claimed.kind==="empty"){log.log("\u30AD\u30E5\u30FC\u306Bpending\u30A2\u30A4\u30C6\u30E0\u304C\u3042\u308A\u307E\u305B\u3093\u3002Phase 2 \
|
|
238
|
+
\u5B8C\u4E86\u3002");break}if(claimed.kind==="filtered"){const reasons=`${describeFilteredReasons(claimed.by)}\u306E\u307F`;log.log(this.nothingClaimableBacklog?`\u3053\u306E\u6A5F\u4F53\u304C\u53D6\u308C\u308B pending \u30A2\u30A4\u30C6\u30E0\u304C\u3042\u308A\u307E\u305B\u3093\uFF08${reasons}\uFF09\u3002Phase 2 \u5B8C\u4E86\u3002\u6B21\u30B5\u30A4\u30AF\u30EB\u306F\u8A08\u753B\u3057\u307E\u3059\u3002`:"\u3053\u306E\u6A5F\u4F53\u304C\u53D6\u308C\u308B pending \u30A2\u30A4\u30C6\u30E0\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u7406\u7531\u3092\u5224\u5B9A\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u6B21\u30B5\u30A4\u30AF\u30EB\u3082\u8A08\u753B\u3057\u307E\u305B\u3093\uFF09\u3002Phase 2 \u5B8C\u4E86\u3002");
|
|
238
239
|
break}const item=claimed.item;const itemId=item.item_id??"";const prompt=(item.prompt??"").trim();const label=item.label??"";if(!itemId||!prompt){log.log(`\u30C7\u30AD\u30E5\u30FC\u7D50\u679C\u306E\u30D1\u30FC\u30B9\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${JSON.stringify(item).slice(0,200)}`);break}stepNum+=1;log.separator();log.log(`[${stepNum}] ${label}`);log.log(` item_id: ${itemId}`);await runner.beat("dequeue",itemId);log.log(` prompt: ${prompt}`);log.separator();const stopMatch=/^\/stop(?:\s+(\d+))?$/.
|
|
239
240
|
exec(prompt);if(stopMatch){const res=await api.update(itemId,{status:"completed"},config.runId);if(res.status===409){log.log(" \u26A0\uFE0F /stop \u30A2\u30A4\u30C6\u30E0\u306F\u65E2\u306B\u5225\u306E\u30E9\u30F3\u30CA\u30FC\u304C\u4FDD\u6301\u3057\u3066\u3044\u307E\u3059\uFF08409\uFF09\u3002\u3053\u3061\u3089\u3067\u306F\u8A18\u9332\u3057\u307E\u305B\u3093")}else if(!res.ok){log.log(` \u26D4 /stop \u30A2\u30A4\u30C6\u30E0\u3092 completed \u306B\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(
|
|
240
241
|
res)}\uFF09`);log.log(" \u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306F\u56DE\u53CE\u5F8C\u306B pending \u3078\u623B\u308B\u305F\u3081\u3001**\u6B21\u56DE\u8D77\u52D5\u6642\u3082\u5373\u505C\u6B62\u3057\u307E\u3059**");log.log(` \u5FA9\u65E7: UI \u304BAPI\u3067 item=${itemId} \u3092 completed / failed \u306B\u3057\u3066\u304F\u3060\u3055\u3044`)}completed+=1;const waitSec=stopMatch[1];if(waitSec){const requested=Number.parseInt(waitSec,10);const capped=Math.min(requested,STOP_WAIT_MAX_SEC);if(capped!==
|
|
@@ -301,7 +302,7 @@ handlers.onRestart({from:decision.from,to:decision.to})};const timer=setInterval
|
|
|
301
302
|
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-FAX42DSC.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-FAX42DSC.js");const extraHosts=config.
|
|
302
303
|
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.
|
|
303
304
|
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.
|
|
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-
|
|
305
|
+
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-4LAFJQP4.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)})}
|
|
305
306
|
const profile=resolveProfile(opts.profile);let creds;try{creds=new AuthSession(profile.name,profile.apiUrl).loadOrThrow()}catch(err){process.stderr.write(`${err.message}
|
|
306
307
|
`);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}
|
|
307
308
|
`);return 1}}const api2=new AgentLoopApi({apiUrl,projectId:filterId??"",session});const{runCapacityList}=await import("./capacity-list-command-DDCYRLGV.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");
|
|
@@ -311,15 +312,16 @@ return 2}const projectApi=new ProjectApi(apiUrl,session);let project;try{project
|
|
|
311
312
|
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");
|
|
312
313
|
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,
|
|
313
314
|
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-UGG7X2KU.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})}
|
|
314
|
-
if(opts.action==="
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
projectId,session})},{op:opts.
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
315
|
+
if(opts.action==="trigger"){if(opts.triggerOp===void 0){process.stderr.write("trigger \u306B\u306F list / show / push / delete / history / release \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}const{runTriggerCommand}=await import("./trigger-command-35FDCYT7.js");return runTriggerCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.triggerOp,id:opts.triggerId,file:opts.charterInput,taskKey:opts.triggerKey,limit:opts.triggerLimit,revision:opts.
|
|
316
|
+
charterRevision,output:opts.output,query:opts.query,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="schedule"&&opts.scheduleOp!==void 0){const{runScheduleDefCommand}=await import("./schedule-def-command-QZB4FGWV.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.
|
|
317
|
+
profile})}if(opts.action==="settings"){if(opts.settingsOp===void 0){process.stderr.write("settings \u306B\u306F push / 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");
|
|
318
|
+
return runSettingsCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.settingsOp,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");
|
|
319
|
+
return runOrientationCommand({api:new AgentLoopApi({apiUrl,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)){
|
|
320
|
+
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");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"||
|
|
321
|
+
opts.skillOp==="show"||opts.skillOp==="delete"){const{runSkillManageCommand}=await import("./skill-manage-command-RACKW7W4.js");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({
|
|
322
|
+
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.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,
|
|
323
|
+
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.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\
|
|
324
|
+
\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}
|
|
323
325
|
`);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}\
|
|
324
326
|
|
|
325
327
|
`)}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}
|
|
@@ -1,15 +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-
|
|
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}
|
|
3
|
+
import{GLOBAL_FLAGS,TRIGGER_OPS}from"./chunk-RFXIPNKG.js";import"./chunk-2LOT54OO.js";import{ORIENTATION_OPS}from"./chunk-NJL3H2BB.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-6FI4ZMZ7.js";import{BUILTIN_COMMANDS,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,rewriteQueueCommand}from"./chunk-B2D2NO5H.js";import"./chunk-OKATZ4SN.js";import{OUTPUT_FORMATS}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";
|
|
4
|
+
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}
|
|
5
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.
|
|
6
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(
|
|
7
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),
|
|
8
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===
|
|
9
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,
|
|
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===
|
|
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
|
|
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);if(pos.length===2&&second==="trigger"&&!current.startsWith("-"))return byPrefix(TRIGGER_OPS,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,
|
|
11
|
+
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;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===
|
|
12
|
+
second)}if(operation===void 0)return[];if(!current.startsWith("-"))return[];return byPrefix(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
|
|
13
13
|
# \u8AAD\u307F\u8FBC\u307F: eval "$(twp completion bash)" \uFF0F \u5E38\u7528: ~/.bashrc \u306B\u540C\u30581\u884C\u3092\u66F8\u304F
|
|
14
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
|
|
15
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-
|
|
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-B2D2NO5H.js";import"./chunk-OKATZ4SN.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{NO_PLAN_SESSION,PLAN_DIR_ENV,PLAN_TOKEN_ENV,checkPlan,fileSkillNames,formatCheck,openPlanSession,runPlanSubmit}from"./chunk-
|
|
3
|
+
import{NO_PLAN_SESSION,PLAN_DIR_ENV,PLAN_TOKEN_ENV,checkPlan,fileSkillNames,formatCheck,openPlanSession,runPlanSubmit}from"./chunk-J6A575H2.js";import"./chunk-HUKKZ252.js";import"./chunk-VEEZJNOB.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";
|
|
4
4
|
import"./chunk-BD7O73GK.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};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{comparable,describeWhen,runScheduleDefCommand,stableJson}from"./chunk-76WVQ45F.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import"./chunk-VFPY2A23.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{comparable,describeWhen,runScheduleDefCommand,stableJson};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{stableJson}from"./chunk-76WVQ45F.js";import{reasonOf,unwrap}from"./chunk-MYBIPHZ7.js";import{apiExit,currentRevisionOf,errorDetail,pickNumber,readUtf8Strict,shellQuote,str,warnHiddenChars}from"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{EXIT_API_CLIENT,EXIT_API_SERVER,EXIT_FAILURE,EXIT_OK,EXIT_USAGE,UsageError}from"./chunk-VFPY2A23.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var TRIGGER_ID=/^[a-z0-9][a-z0-9._-]{0,63}$/;var DEFINITION_KEYS=["name","enabled","match","threshold","action","cooldown_hours","max_fires_per_day"];var FORMATS=["json","table","tsv"];async function runTriggerCommand(deps,opts){const io={out:deps.out??(t=>void process.stdout.write(stripTerminalControls(t))),err:deps.err??(t=>void process.stderr.write(stripTerminalControls(t))),readFile:deps.readFile??readUtf8Strict,isTty:deps.isTty??process.stdout.isTTY===true};try{switch(opts.op){case"list":return await list(
|
|
4
|
+
deps.api,opts,io);case"show":return await show(deps.api,opts,io);case"push":return await push(deps.api,opts,io);case"delete":return await remove(deps.api,opts,io);case"history":return await history(deps.api,opts,io);case"release":return await release(deps.api,opts,io)}}catch(e){if(e instanceof UsageError){io.err(`${e.message}
|
|
5
|
+
${e.hint?`${e.hint}
|
|
6
|
+
`:""}`);return EXIT_USAGE}throw e}}async function formatOf(opts,io){const{resolveOutputFormat}=await import("./format-F6PPBPY5.js");const format=resolveOutputFormat({...opts.output!==void 0?{flag:opts.output}:{},isTty:io.isTty});if(format===null||!FORMATS.includes(format)){throw new UsageError(`trigger ${opts.op} \u306E --output \u306B\u300C${opts.output??""}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${FORMATS.join(" / ")} \u3067\u3059`)}
|
|
7
|
+
return format}async function emit(value,opts,format,io){const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-HH2Y6YKX.js");const selected=opts.query===void 0?value:await evaluateQuery(opts.query,value);const text2=renderOutput(selected,format);io.out(text2.endsWith("\n")?text2:`${text2}
|
|
8
|
+
`)}async function list(api,opts,io){const format=await formatOf(opts,io);const triggers=await fetchTriggers(api,io.err);if(typeof triggers==="number")return triggers;const sorted=[...triggers].sort((a,b)=>str(a["id"]).localeCompare(str(b["id"])));if(format==="json"){await emit(sorted,opts,format,io);return EXIT_OK}io.err(`\u6761\u4EF6\u30C8\u30EA\u30AC\u30FC ${sorted.length} \u4EF6
|
|
9
|
+
`);if(opts.query===void 0&&sorted.length===0)return EXIT_OK;await emit(sorted.map(summaryRow),opts,format,io);return EXIT_OK}function summaryRow(t){const match=obj(t["match"]);const threshold=obj(t["threshold"]);const action=obj(t["action"]);const skills=Array.isArray(match["skills"])?match["skills"].map(String).join(","):"";const codes=Array.isArray(match["outcome_codes"])?match["outcome_codes"].map(String).join(","):"";return{id:str(t["id"]),enabled:t["enabled"]===false?"\u7121\u52B9":"\u6709\u52B9",
|
|
10
|
+
name:str(t["name"]),skills,outcome_codes:codes,condition:`${text(threshold["count"])}\u56DE/${text(threshold["window_hours"])}h${match["require_state_unchanged"]===false?"":"\u30FB\u72B6\u614B\u4E0D\u5909"}`,action:`${str(action["skill"])}${str(action["args"])!==""?` ${str(action["args"])}`:""}\uFF08${str(action["priority"])}\uFF09`,block_source:action["block_source"]===true?"\u3042\u308A":"\u306A\u3057",revision:t["revision"]??""}}async function show(api,opts,io){const id=requireId(opts);const format=await formatOf(
|
|
11
|
+
opts,io);const res=await api.request("GET",`/triggers/${encodeURIComponent(id)}`);if(!res.ok){io.err(`\u26D4 \u6761\u4EF6\u30C8\u30EA\u30AC\u30FC ${id} \u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
|
|
12
|
+
`);return apiExit(res)}const body=unwrap(res,"id");if(str(body["id"])===""){io.err(`\u26D4 \u6761\u4EF6\u30C8\u30EA\u30AC\u30FC\u306E\u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
|
|
13
|
+
`);return EXIT_API_SERVER}const{result:_envelope,...definition}=body;void _envelope;await emit(format==="json"?definition:summaryRow(definition),opts,format,io);return EXIT_OK}async function history(api,opts,io){if(opts.id!==void 0)requireId(opts);if(opts.limit!==void 0&&!/^\d+$/.test(opts.limit)){throw new UsageError(`--limit \u306F\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${opts.limit}`)}const format=await formatOf(opts,io);const qs=new URLSearchParams;if(opts.id!==void 0)
|
|
14
|
+
qs.set("trigger_id",opts.id);if(opts.taskKey!==void 0)qs.set("task_key",opts.taskKey);if(opts.limit!==void 0)qs.set("limit",opts.limit);const suffix=qs.toString()===""?"":`?${qs.toString()}`;const res=await api.request("GET",`/trigger-fires${suffix}`);if(!res.ok){io.err(`\u26D4 \u767A\u706B\u5C65\u6B74\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
|
|
15
|
+
`);return apiExit(res)}const body=unwrap(res,"fires");const fires=body["fires"];if(!Array.isArray(fires)){io.err(`\u26D4 \u767A\u706B\u5C65\u6B74\u306E\u5FDC\u7B54\u306B fires \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
|
|
16
|
+
`);return EXIT_API_SERVER}const truncated=body["truncated"]===true;if(format==="json"){await emit({fires,truncated},opts,format,io);return EXIT_OK}io.err(`\u767A\u706B ${fires.length} \u4EF6${truncated?"\uFF08\u3053\u306E\u5148\u306B\u3082\u3042\u308A\u307E\u3059\u3002--limit \u3092\u4E0A\u3052\u308B\u304B\u7D5E\u308A\u8FBC\u3093\u3067\u304F\u3060\u3055\u3044\uFF09":""}
|
|
17
|
+
`);if(opts.query===void 0&&fires.length===0)return EXIT_OK;const rows=fires.map(f=>{const r=obj(f);return{fired_at:str(r["fired_at"]),trigger_id:str(r["trigger_id"]),task_key:str(r["task_key"]),skill:str(r["skill"]),count:r["count"]??"",action_skill:str(r["action_skill"]),result:str(r["result"]),created_item_id:str(r["created_item_id"])}});await emit(rows,opts,format,io);return EXIT_OK}async function push(api,opts,io){const file=opts.file??"";let expected;if(opts.revision!==void 0){const map=parseRevisionMap(
|
|
18
|
+
opts.revision);if(map===null){io.err(`push \u306E --revision \u306F\u300C\u30C8\u30EA\u30AC\u30FCID=\u756A\u53F7\u300D\u3092\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: loop-guard=3,new-one=0\uFF09: ${opts.revision}
|
|
19
|
+
`);return EXIT_USAGE}if(!opts.yes){io.err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u66F8\u304D\u8FBC\u307F\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=map}const defs=readDefinitions(file,io);if(defs===null)return EXIT_USAGE;const remote=await fetchTriggers(api,io.err);if(typeof remote==="number")return remote;const plan=planOf(defs,remote);io.out(`push \u5BFE\u8C61: \u4F5C\u6210 ${plan.creates.
|
|
20
|
+
length} \u4EF6 / \u66F4\u65B0 ${plan.updates.length} \u4EF6 / \u5909\u66F4\u306A\u3057 ${plan.unchanged} \u4EF6
|
|
21
|
+
`);for(const d of plan.creates){io.out(` + ${str(d["id"])}
|
|
22
|
+
`);for(const line of JSON.stringify(payloadOf(d),null,2).split("\n"))io.out(` ${line}
|
|
23
|
+
`)}for(const u of plan.updates){io.out(` ~ ${str(u.def["id"])}\uFF08\u30B5\u30FC\u30D0 revision ${u.revision??"\u4E0D\u660E"}\uFF09
|
|
24
|
+
`);for(const f of u.fields){io.out(` ${f.key}: \u30B5\u30FC\u30D0=${JSON.stringify(f.server??null)} \u2192 \u30D5\u30A1\u30A4\u30EB=${JSON.stringify(f.file??null)}
|
|
25
|
+
`)}}for(const id of plan.onlyRemote)io.out(` ! \u30B5\u30FC\u30D0\u306B\u306E\u307F\u5B58\u5728\uFF08\u524A\u9664\u3057\u307E\u305B\u3093\uFF09: ${id}
|
|
26
|
+
`);if(plan.creates.length===0&&plan.updates.length===0){io.out("\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u66F8\u304D\u8FBC\u307F\u307E\u305B\u3093\u3067\u3057\u305F\u3002\n");return EXIT_OK}warnHiddenChars(io.out,JSON.stringify([...plan.creates,...plan.updates.map(u=>u.def)].map(payloadOf)));const shown=[...plan.creates.map(d=>`${str(d["id"])}=0`),...plan.updates.map(u=>`${str(u.def["id"])}=${u.revision??0}`)].join(",");if(!opts.yes){io.out(`
|
|
27
|
+
\u66F8\u304D\u8FBC\u3093\u3067\u3044\u307E\u305B\u3093\u3002\u3053\u306E\u5185\u5BB9\u3067\u78BA\u5B9A\u3059\u308B\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u8868\u793A\u3057\u305F revision \u3092\u9001\u308B\u306E\u3067\u3001\u305D\u306E\u5F8C\u30B5\u30FC\u30D0\u3067\u66F4\u65B0\u3055\u308C\u305F\u5B9A\u7FA9\u304C\u3042\u308C\u30701\u4EF6\u3082\u66F8\u304B\u305A\u306B\u6B62\u307E\u308A\u307E\u3059\uFF09:
|
|
28
|
+
${confirmCommand(opts,["push"],{file,revision:shown})}
|
|
29
|
+
`);return EXIT_USAGE}if(expected!==void 0){const planned=new Map([...plan.creates.map(d=>[str(d["id"]),0]),...plan.updates.map(u=>[str(u.def["id"]),u.revision??-1])]);const fileIds=new Set(defs.map(d=>str(d["id"])));const unseen=[...planned.keys()].filter(id=>!expected.has(id));const unknown=[...expected.keys()].filter(id=>!fileIds.has(id));if(unseen.length>0||unknown.length>0){io.err(`\u26D4 \u6848\u5185\u3057\u305F --revision \u3068\u3001\u3044\u307E\u306E\u5DEE\u5206\u306E\u5BFE\u8C61\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093\uFF08\u8868\u793A\u3057\u305F\u5F8C\u306B\u30D5\u30A1\u30A4\u30EB\u304B\u30B5\u30FC\u30D0\u304C\u5909\u308F\u308A\u307E\u3057\u305F\uFF09\u30021\u4EF6\u3082\u66F8\u3044\u3066\u3044\u307E\u305B\u3093${unseen.
|
|
30
|
+
length>0?`\uFF0F\u6848\u5185\u306B\u7121\u3044: ${unseen.join(", ")}`:""}${unknown.length>0?`\uFF0F\u30D5\u30A1\u30A4\u30EB\u306B\u7121\u3044: ${unknown.join(", ")}`:""}
|
|
31
|
+
`);return EXIT_USAGE}const moved=[...planned.entries()].filter(([id,rev])=>expected.get(id)!==rev);if(moved.length>0){io.err("\u26D4 \u8868\u793A\u3057\u305F\u5F8C\u306B\u30B5\u30FC\u30D0\u3067\u66F4\u65B0\u3055\u308C\u305F\u5B9A\u7FA9\u304C\u3042\u308A\u307E\u3059\u3002\u4E0A\u66F8\u304D\u305B\u305A\u306B\u6B62\u3081\u307E\u3057\u305F\uFF081\u4EF6\u3082\u66F8\u3044\u3066\u3044\u307E\u305B\u3093\uFF09: "+moved.map(([id,rev])=>`${id}\uFF08\u6848\u5185 ${expected.get(id)} \u2192 \u73FE\u5728 ${rev}\
|
|
32
|
+
\uFF09`).join(", ")+"\n");return EXIT_API_CLIENT}}let failure=null;for(const d of plan.creates){const res=await api.request("POST","/triggers",payloadOf(d));if(res.ok){io.out(` \u4F5C\u6210: ${str(d["id"])}
|
|
33
|
+
`);continue}io.err(` \u26D4 \u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 ${str(d["id"])}\uFF08${errorDetail(res)}\uFF09
|
|
34
|
+
`);if(res.status===401||res.status===403)return apiExit(res);failure??=apiExit(res)}for(const u of plan.updates){const id=str(u.def["id"]);if(u.revision===null){io.err(` \u26D4 \u66F4\u65B0\u3067\u304D\u307E\u305B\u3093 ${id}\uFF08\u30B5\u30FC\u30D0\u306E\u5FDC\u7B54\u306B revision \u304C\u3042\u308A\u307E\u305B\u3093\uFF09
|
|
35
|
+
`);failure??=EXIT_API_SERVER;continue}const res=await api.request("PUT",`/triggers/${encodeURIComponent(id)}`,{...payloadOf(u.def),revision:u.revision});if(res.ok){io.out(` \u66F4\u65B0: ${id}
|
|
36
|
+
`);continue}if(res.status===409){const now=currentRevisionOf(res);io.err(` \u26D4 409: ${id} \u306F revision ${u.revision} \u3067\u9001\u308A\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u306F${now!==null?` revision ${now} \u306B`:""}\u66F4\u65B0\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u4E0A\u66F8\u304D\u305B\u305A\u306B\u6B62\u3081\u307E\u3057\u305F
|
|
37
|
+
`)}else{io.err(` \u26D4 \u66F4\u65B0\u3067\u304D\u307E\u305B\u3093 ${id}\uFF08${errorDetail(res)}\uFF09
|
|
38
|
+
`)}if(res.status===401||res.status===403)return apiExit(res);failure??=apiExit(res)}const after=await fetchTriggers(api,io.err);if(typeof after==="number")return after;const rest=planOf(defs,after);const remaining=rest.creates.length+rest.updates.length;if(failure!==null||remaining>0){io.err(`\u26D4 \u53CD\u6620\u304C\u53CE\u675F\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u30D5\u30A1\u30A4\u30EB\u3068\u9055\u3046\u5B9A\u7FA9\u304C ${remaining} \u4EF6\u6B8B\u3063\u3066\u3044\u307E\u3059\uFF09\u3002\u4E0A\u306E\u7406\u7531\u3092\u89E3\u6D88\u3057\u3066\u3084\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\u3044
|
|
39
|
+
`);return failure??EXIT_FAILURE}io.out(`\u53CD\u6620\u3057\u307E\u3057\u305F\uFF08\u4F5C\u6210 ${plan.creates.length} \u4EF6 / \u66F4\u65B0 ${plan.updates.length} \u4EF6\u30FB\u30D5\u30A1\u30A4\u30EB\u3068\u30B5\u30FC\u30D0\u306E\u5DEE\u52060\u3092\u78BA\u8A8D\uFF09
|
|
40
|
+
`);return EXIT_OK}function planOf(defs,server){const byId=new Map(server.map(s=>[str(s["id"]),s]));const plan={creates:[],updates:[],unchanged:0,onlyRemote:[]};const fileIds=new Set;for(const d of defs){const id=str(d["id"]);fileIds.add(id);const current=byId.get(id);if(current===void 0){plan.creates.push(d);continue}const a=comparableTrigger(current);const b=comparableTrigger(d);const fields=DEFINITION_KEYS.filter(k=>stableJson(a[k])!==stableJson(b[k])).map(k=>({key:k,server:a[k],file:b[k]}));if(fields.
|
|
41
|
+
length===0)plan.unchanged+=1;else plan.updates.push({def:d,revision:pickNumber(current,"revision"),fields})}plan.onlyRemote=[...byId.keys()].filter(id=>!fileIds.has(id)).sort();return plan}function comparableTrigger(def){const match=obj(def["match"]);const action=obj(def["action"]);const name=def["name"];const label=action["label"]??null;return{name:typeof name==="string"?name.trim():name??"",enabled:def["enabled"]??true,match:{skills:match["skills"]??[],outcome_codes:match["outcome_codes"]??[],
|
|
42
|
+
require_state_unchanged:match["require_state_unchanged"]??true,compare_updated_at:match["compare_updated_at"]??false},threshold:obj(def["threshold"]),action:{skill:action["skill"]??"",args:action["args"]??"",priority:action["priority"]??"P2",label:label===""?null:label,block_source:action["block_source"]??false},cooldown_hours:def["cooldown_hours"]??24,max_fires_per_day:def["max_fires_per_day"]??20}}function payloadOf(def){const out={id:def["id"]};for(const k of DEFINITION_KEYS)if(k in def)out[k]=
|
|
43
|
+
def[k];return out}function readDefinitions(file,io){let parsed;try{parsed=JSON.parse(io.readFile(file))}catch(e){io.err(`${file} \u3092\u8AAD\u3081\u306A\u3044\u304B JSON \u3068\u3057\u3066\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08${e.message}\uFF09
|
|
44
|
+
`);return null}let raw;if(Array.isArray(parsed))raw=parsed;else if(parsed&&typeof parsed==="object"&&"triggers"in parsed)raw=parsed["triggers"];else if(parsed&&typeof parsed==="object"&&"id"in parsed)raw=[parsed];else{io.err(`${file} \u306B\u5B9A\u7FA9\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u5B9A\u7FA91\u4EF6\u30FB\u5B9A\u7FA9\u306E\u914D\u5217\u30FB{ "triggers": [...] } \u306E\u3044\u305A\u308C\u304B\uFF09
|
|
45
|
+
`);return null}if(!Array.isArray(raw)){io.err(`${file} \u306E triggers \u304C\u914D\u5217\u3067\u306F\u3042\u308A\u307E\u305B\u3093
|
|
46
|
+
`);return null}const allowed=new Set(["id",...DEFINITION_KEYS,"revision","updated_by","updated_by_name","updated_at"]);const seen=new Set;const out=[];for(const[i,d]of raw.entries()){if(!d||typeof d!=="object"||Array.isArray(d)){io.err(`${file} \u306E ${i+1} \u4EF6\u76EE\u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093
|
|
47
|
+
`);return null}const id=d["id"];if(typeof id!=="string"||!TRIGGER_ID.test(id)){io.err(`${file} \u306E ${i+1} \u4EF6\u76EE\u306E id \u304C\u4E0D\u6B63\u3067\u3059\uFF08\u82F1\u5C0F\u6587\u5B57\u30FB\u6570\u5B57\u3067\u59CB\u307E\u308A\u3001\u82F1\u5C0F\u6587\u5B57\u30FB\u6570\u5B57\u30FB. _ - \u306E64\u5B57\u4EE5\u5185\uFF09: ${JSON.stringify(id??null)}
|
|
48
|
+
`);return null}const unknownKeys=Object.keys(d).filter(k=>!k.startsWith("_")&&!allowed.has(k));if(unknownKeys.length>0){io.err(`${file} \u306E ${id} \u306B\u77E5\u3089\u306A\u3044\u30AD\u30FC\u304C\u3042\u308A\u307E\u3059: ${unknownKeys.join(", ")}
|
|
49
|
+
`);return null}if(seen.has(id)){io.err(`${file} \u306B\u540C\u3058 id \u304C2\u56DE\u3042\u308A\u307E\u3059: ${id}
|
|
50
|
+
`);return null}seen.add(id);out.push(d)}if(out.length===0){io.err(`${file} \u306B\u5B9A\u7FA9\u304C1\u4EF6\u3082\u3042\u308A\u307E\u305B\u3093
|
|
51
|
+
`);return null}return out}async function remove(api,opts,io){const id=requireId(opts);let expected;if(opts.revision!==void 0){if(!/^\d+$/.test(opts.revision)){io.err(`--revision \u306F0\u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${opts.revision}
|
|
52
|
+
`);return EXIT_USAGE}if(!opts.yes){io.err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u524A\u9664\u3057\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=Number(opts.revision)}const remote=await fetchTriggers(api,io.err);if(typeof remote==="number")return remote;const current=remote.find(t=>str(t["id"])===id);if(current===void 0){io.err(`\u6761\u4EF6\u30C8\u30EA\u30AC\u30FC ${id} \u306F\u30B5\u30FC\u30D0\u306B\u3042\u308A\u307E\u305B\u3093\uFF08\u524A\u9664\u3059\u308B\u3082\u306E\u306F\u3042\u308A\u307E\u305B\
|
|
53
|
+
\u3093\uFF09
|
|
54
|
+
`);return EXIT_FAILURE}const revision=pickNumber(current,"revision");if(revision===null){io.err(`\u26D4 \u6761\u4EF6\u30C8\u30EA\u30AC\u30FC ${id} \u306E revision \u3092\u8AAD\u3081\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5F62\u304C\u5951\u7D04\u3068\u9055\u3044\u307E\u3059\uFF09
|
|
55
|
+
`);return EXIT_API_SERVER}const row=summaryRow(current);io.out(`\u524A\u9664\u5BFE\u8C61\uFF08revision ${revision}\uFF09: ${str(row["id"])} ${str(row["name"])}\u30FB${str(row["condition"])} \u2192 ${str(row["action"])}
|
|
56
|
+
`);if(!opts.yes){io.out(`
|
|
57
|
+
\u524A\u9664\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u6B62\u3081\u308B\u3060\u3051\u306A\u3089 enabled: false \u3092 push \u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u7248\u5C65\u6B74\u306F\u6B8B\u308A\u307E\u3059\u304C\u5B9A\u7FA9\u306F\u6D88\u3048\u307E\u3059\uFF09\u3002\u524A\u9664\u3059\u308B\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08revision ${revision} \u3092\u9001\u308B\u306E\u3067\u3001\u305D\u306E\u5F8C\u30B5\u30FC\u30D0\u3067\u66F4\u65B0\u3055\u308C\u3066\u3044\u308C\u3070 409 \u3067\u6B62\u307E\u308A\u307E\u3059\uFF09:
|
|
58
|
+
${confirmCommand(opts,["delete",id],{revision})}
|
|
59
|
+
`);return EXIT_USAGE}const sent=expected??revision;const res=await api.request("DELETE",`/triggers/${encodeURIComponent(id)}?revision=${sent}`);if(!res.ok){if(res.status===409){const now=currentRevisionOf(res);io.err(`\u26D4 409: revision ${sent} \u3067\u9001\u308A\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u306F${now!==null?` revision ${now} \u306B`:""}\u66F4\u65B0\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u524A\u9664\u305B\u305A\u306B\u6B62\u3081\u307E\u3057\u305F
|
|
60
|
+
`)}else{io.err(`\u26D4 \u6761\u4EF6\u30C8\u30EA\u30AC\u30FC\u3092\u524A\u9664\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
|
|
61
|
+
`)}return apiExit(res)}io.out(`\u524A\u9664\u3057\u307E\u3057\u305F: ${id}
|
|
62
|
+
`);return EXIT_OK}async function release(api,opts,io){const id=requireId(opts);const key=(opts.taskKey??"").trim();if(key==="")throw new UsageError("trigger release \u306B\u306F --key <\u30BF\u30B9\u30AF\u30AD\u30FC> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");const res=await api.request("GET","/trigger-blocks");if(!res.ok){io.err(`\u26D4 \u6295\u5165\u30D6\u30ED\u30C3\u30AF\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
|
|
63
|
+
`);return apiExit(res)}const blocks=unwrap(res,"blocks")["blocks"];if(!Array.isArray(blocks)){io.err(`\u26D4 \u6295\u5165\u30D6\u30ED\u30C3\u30AF\u306E\u5FDC\u7B54\u306B blocks \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
|
|
64
|
+
`);return EXIT_API_SERVER}const targets=blocks.map(obj).filter(b=>str(b["trigger_id"])===id&&str(b["task_key"])===key);if(targets.length===0){io.err(`${key} \u306B\u6761\u4EF6\u30C8\u30EA\u30AC\u30FC ${id} \u306E\u6295\u5165\u30D6\u30ED\u30C3\u30AF\u306F\u3042\u308A\u307E\u305B\u3093\uFF08\u89E3\u9664\u3059\u308B\u3082\u306E\u306F\u3042\u308A\u307E\u305B\u3093\uFF09
|
|
65
|
+
`);return EXIT_FAILURE}io.out(`\u89E3\u9664\u5BFE\u8C61 ${targets.length} \u4EF6:
|
|
66
|
+
`);for(const b of targets){io.out(` ${key} \xD7 ${str(b["skill"])}\uFF08${str(b["blocked_at"])} \u304B\u3089\u30FB\u671F\u9650 ${str(b["expires_at"])||"\u4E0D\u660E"}\uFF09
|
|
67
|
+
`)}if(!opts.yes){io.out(`
|
|
68
|
+
\u89E3\u9664\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u89E3\u9664\u3059\u308B\u3068\u3001\u3053\u306E\u30BF\u30B9\u30AF\u3078\u5143\u306E\u30B9\u30AD\u30EB\u3092\u518D\u3073\u6295\u5165\u3067\u304D\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3059\u3002\u89E3\u9664\u3059\u308B\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044:
|
|
69
|
+
${confirmCommand(opts,["release",id],{key})}
|
|
70
|
+
`);return EXIT_USAGE}let failure=null;for(const b of targets){const skill=str(b["skill"]);const r=await api.request("POST","/trigger-blocks/release",{task_key:key,skill});if(r.ok){io.out(` \u89E3\u9664\u3057\u307E\u3057\u305F: ${key} \xD7 ${skill}
|
|
71
|
+
`);continue}if(r.status===404&&reasonOf(r)==="block_not_found"){io.out(` \u65E2\u306B\u89E3\u9664\u3055\u308C\u3066\u3044\u307E\u3059: ${key} \xD7 ${skill}
|
|
72
|
+
`);continue}io.err(` \u26D4 \u89E3\u9664\u3067\u304D\u307E\u305B\u3093 ${key} \xD7 ${skill}\uFF08${errorDetail(r)}\uFF09
|
|
73
|
+
`);if(r.status===401||r.status===403)return apiExit(r);failure??=apiExit(r)}return failure??EXIT_OK}async function fetchTriggers(api,err){const res=await api.request("GET","/triggers");if(!res.ok){err(`\u26D4 \u6761\u4EF6\u30C8\u30EA\u30AC\u30FC\u306E\u5B9A\u7FA9\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
|
|
74
|
+
`);return apiExit(res)}const triggers=unwrap(res,"triggers")["triggers"];if(!Array.isArray(triggers)){err(`\u26D4 \u5B9A\u7FA9\u306E\u5FDC\u7B54\u306B triggers \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
|
|
75
|
+
`);return EXIT_API_SERVER}return triggers.filter(t=>!!t&&typeof t==="object"&&!Array.isArray(t))}function requireId(opts){const id=opts.id??"";if(!TRIGGER_ID.test(id)){throw new UsageError(`\u30C8\u30EA\u30AC\u30FCID\u306E\u5F62\u304C\u4E0D\u6B63\u3067\u3059\uFF08\u82F1\u5C0F\u6587\u5B57\u30FB\u6570\u5B57\u3067\u59CB\u307E\u308A\u3001\u82F1\u5C0F\u6587\u5B57\u30FB\u6570\u5B57\u30FB. _ - \u306E64\u5B57\u4EE5\u5185\uFF09: ${id}`)}return id}function parseRevisionMap(raw){const map=new Map;for(const part of raw.
|
|
76
|
+
split(",")){const m=/^([^=]+)=(\d+)$/.exec(part);if(m===null)return null;const id=m[1];if(!TRIGGER_ID.test(id)||map.has(id))return null;map.set(id,Number(m[2]))}return map}function text(v){return typeof v==="number"||typeof v==="boolean"?String(v):str(v)}function obj(v){return v&&typeof v==="object"&&!Array.isArray(v)?v:{}}function confirmCommand(opts,sub,extra={}){const parts=["twp task-loop trigger",...sub.map((s,i)=>i===0?s:shellQuote(s)),"--project",shellQuote(opts.projectRef)];if(opts.profile!==
|
|
77
|
+
void 0)parts.push("--profile",shellQuote(opts.profile));if(extra.file!==void 0)parts.push("--file",shellQuote(extra.file));if(extra.key!==void 0)parts.push("--key",shellQuote(extra.key));parts.push("--yes");if(extra.revision!==void 0)parts.push("--revision",String(extra.revision));return parts.join(" ")}export{comparableTrigger,runTriggerCommand,summaryRow};
|
package/package.json
CHANGED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"domain": "prospect-activity",
|
|
3
|
-
"operations": [
|
|
4
|
-
{"name":"create","domain":"prospect-activity","operationId":"prospectActivity.store","method":"POST","path":"/v2/prospects/{prospectId}/activities","summary":"アプローチ履歴の登録","pathParams":[{"name":"prospectId","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":{"schema":{"type":"object","properties":{"method":{"type":"string","enum":["call","form","email","mail","visit","other"]},"result":{"type":"string","enum":["no_answer","rejected","interested","appointment","other"]},"activity_date":{"type":["string","null"],"format":"date-time"},"next_action_date":{"type":["string","null"],"format":"date"},"content":{"type":["string","null"],"maxLength":10000},"campaign_id":{"type":["string","null"],"maxLength":255},"status":{"type":["string","null"],"enum":["new","approaching","responded","appointment","rejected","on_hold",null]}},"required":["method","result"]}},"resultPath":null,"risk":"write","aliases":[]},
|
|
5
|
-
{"name":"delete","domain":"prospect-activity","operationId":"prospectActivity.destroy","method":"DELETE","path":"/v2/prospects/{prospectId}/activities/{activityId}","summary":"アプローチ履歴の削除(論理削除)","pathParams":[{"name":"prospectId","type":"string","required":true,"source":"spec"},{"name":"activityId","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":null,"resultPath":null,"risk":"destructive","aliases":[]},
|
|
6
|
-
{"name":"list","domain":"prospect-activity","operationId":"prospectActivity.index","method":"GET","path":"/v2/prospects/{prospectId}/activities","summary":"アプローチ履歴一覧(activity_date 降順)","pathParams":[{"name":"prospectId","type":"string","required":true,"source":"spec"}],"queryParams":[{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"},{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"}],"body":null,"resultPath":"items","risk":"read","aliases":[]},
|
|
7
|
-
{"name":"options","domain":"prospect-activity","operationId":"prospectActivity.options","method":"GET","path":"/v2/prospects/activity-options","summary":"選択肢(手段・結果)の一覧。MCP 経由の利用者が値を推測しなくて済むように公開する。","pathParams":[],"queryParams":[{"name":"limit","type":"integer","required":false,"description":"1ページあたりの件数","source":"curation"},{"name":"cursor","type":"string","required":false,"description":"次ページの取得に使うカーソル","source":"curation"}],"body":null,"resultPath":"results","risk":"read","aliases":[]},
|
|
8
|
-
{"name":"update","domain":"prospect-activity","operationId":"prospectActivity.update","method":"PUT","path":"/v2/prospects/{prospectId}/activities/{activityId}","summary":"アプローチ履歴の更新","pathParams":[{"name":"prospectId","type":"string","required":true,"source":"spec"},{"name":"activityId","type":"string","required":true,"source":"spec"}],"queryParams":[],"body":{"schema":{"type":"object","properties":{"method":{"type":"string","enum":["call","form","email","mail","visit","other"]},"result":{"type":"string","enum":["no_answer","rejected","interested","appointment","other"]},"activity_date":{"type":["string","null"],"format":"date-time"},"next_action_date":{"type":["string","null"],"format":"date"},"content":{"type":["string","null"],"maxLength":10000},"campaign_id":{"type":["string","null"],"maxLength":255},"status":{"type":["string","null"],"enum":["new","approaching","responded","appointment","rejected","on_hold",null]}},"required":["method","result"]}},"resultPath":null,"risk":"write","aliases":[]}
|
|
9
|
-
]
|
|
10
|
-
}
|
package/dist/chunk-FKTYYARF.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
-
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{isModeId,isPermissionModeId}from"./chunk-2LOT54OO.js";import{ORIENTATION_OPS}from"./chunk-NJL3H2BB.js";import{API_TOKEN,HELP_TOKEN,isDomainName}from"./chunk-6FI4ZMZ7.js";import{BOOLEAN_FLAGS,dispatch,resolveRoute,rewriteQueueCommand}from"./chunk-TJQZYYG3.js";import{splitFlagToken}from"./chunk-OKATZ4SN.js";var GLOBAL_FLAGS=new Set(["-h","--help","-v","--version","--profile","--output","--query","--dry-run","--debug","--yes","-y","--refresh"]);function parseArgv(rawArgv){const out={command:"tui",safe:false,daemon:false,forceRunner:false,stopForce:false,logoutForce:false,stopDrain:false,noTui:false,doctor:false,yes:false,skillAll:false,orientationArgs:[],includeStopped:false,planEmpty:false,planCheck:false,noAiConfigFile:false,verbose:false,loginMethod:"browser",loginNoBrowser:false,promptFromStdin:false,
|
|
4
|
-
domainArgv:[],domainHelp:false,dryRun:false,debug:false,refresh:false,unknown:[],allowedTools:[],disallowedTools:[]};const queue=rewriteQueueCommand(rawArgv);if(queue.moved!==void 0){out.movedCommand=queue.moved;return out}const argv=queue.argv;const route=resolveRoute(dispatch(argv));const consumed=new Set;const[firstIndex,secondIndex]=route.consumed;if(route.kind==="builtin"){out.command=route.command;if(route.action!==void 0)out.taskLoopAction=route.action;for(const index of route.consumed)consumed.
|
|
5
|
-
add(index)}else if(route.kind==="domain"){if(route.domain===HELP_TOKEN){if(route.operation===void 0){out.command="help";if(firstIndex!==void 0)consumed.add(firstIndex)}else if(isDomainName(route.operation)){out.command="domain";out.domain=route.operation;out.domainHelp=true;if(firstIndex!==void 0)consumed.add(firstIndex);if(secondIndex!==void 0)consumed.add(secondIndex)}else if(route.operation===API_TOKEN){out.command="api";out.domainHelp=true;if(firstIndex!==void 0)consumed.add(firstIndex);if(secondIndex!==
|
|
6
|
-
void 0)consumed.add(secondIndex)}}else if(route.domain===API_TOKEN){out.command="api";if(firstIndex!==void 0)consumed.add(firstIndex)}else if(isDomainName(route.domain)){out.command="domain";out.domain=route.domain;if(route.operation!==void 0)out.operation=route.operation;for(const index of route.consumed)consumed.add(index)}}const hasSubcommandToken=route.kind==="builtin"||route.kind==="domain"&&(route.domain===HELP_TOKEN||route.domain===API_TOKEN||isDomainName(route.domain));const isDomainRoute=out.
|
|
7
|
-
command==="domain"||out.command==="api";const takeValue=(i,flag,inline)=>{const value=inline??argv[i+1];if(value===void 0||inline===void 0&&value.startsWith("-")){out.unknown.push(flag);return{step:0}}if(value.trim()===""){out.unknown.push(inline===void 0?`${flag} `:`${flag}=${inline}`);return{step:0}}return{value,step:inline===void 0?1:0}};let optionsClosed=false;for(let i=0;i<argv.length;i++){if(consumed.has(i))continue;const raw=argv[i];if(raw===void 0)continue;if(isDomainRoute&&raw==="--")optionsClosed=
|
|
8
|
-
true;const{name:arg,value:inline}=splitFlagToken(raw);if(isDomainRoute&&(optionsClosed||!GLOBAL_FLAGS.has(arg))){out.domainArgv.push(raw);continue}if(inline!==void 0&&BOOLEAN_FLAGS.has(arg)){out.unknown.push(raw);continue}switch(arg){case"-h":case"--help":if(isDomainRoute)out.domainHelp=true;else out.command="help";break;case"-v":case"--version":out.command="version";break;case"--no-tui":out.noTui=true;break;case"--doctor":out.doctor=true;break;case"--password":out.loginMethod="password";break;case"\
|
|
9
|
-
--token":out.loginMethod="token";break;case"--no-browser":out.loginNoBrowser=true;break;case"--profile":{const{value,step}=takeValue(i,"--profile",inline);if(value!==void 0){out.profile=value;i+=step}break}case"-p":case"--print":{const next=inline??argv[i+1];const step=inline===void 0?1:0;if(hasSubcommandToken){out.unknown.push(raw)}else if(next==="-"){out.command="print";out.promptFromStdin=true;out.prompt="";i+=step}else if(next!==void 0&&(inline!==void 0||!next.startsWith("-"))){out.command="\
|
|
10
|
-
print";out.prompt=next;i+=step}else{out.unknown.push(raw)}break}case"--output":{const{value,step}=takeValue(i,"--output",inline);if(value!==void 0){out.output=value;i+=step}break}case"--query":{const{value,step}=takeValue(i,"--query",inline);if(value!==void 0){out.query=value;i+=step}break}case"--dry-run":out.dryRun=true;break;case"--debug":out.debug=true;break;case"--refresh":out.refresh=true;break;case"--tenant":{const{value,step}=takeValue(i,"--tenant",inline);if(value!==void 0){out.tenant=value;
|
|
11
|
-
i+=step}break}case"--mode":{const next=inline??argv[i+1];const step=inline===void 0?1:0;if(isModeId(next)){out.mode=next;i+=step}else if(next!==void 0&&(inline!==void 0||!next.startsWith("-"))){out.unknown.push(inline!==void 0?raw:`--mode ${next}`);i+=step}else{out.unknown.push("--mode")}break}case"--permission-mode":{const next=inline??argv[i+1];const step=inline===void 0?1:0;if(isPermissionModeId(next)){out.permissionMode=next;i+=step}else if(next!==void 0&&(inline!==void 0||!next.startsWith("\
|
|
12
|
-
-"))){out.unknown.push(inline!==void 0?raw:`--permission-mode ${next}`);i+=step}else{out.unknown.push("--permission-mode")}break}case"--allowed-tools":case"--disallowed-tools":{const{value,step}=takeValue(i,arg,inline);if(value!==void 0){(arg==="--allowed-tools"?out.allowedTools:out.disallowedTools).push(value);i+=step}break}case"--model":{const{value,step}=takeValue(i,"--model",inline);if(value!==void 0){out.model=value;i+=step}break}case"--safe":out.safe=true;break;case"--daemon":out.daemon=true;
|
|
13
|
-
break;case"--force-runner":out.forceRunner=true;break;case"--force":out.stopForce=true;break;case"--drain":out.stopDrain=true;break;case"--project":{const{value,step}=takeValue(i,"--project",inline);if(value!==void 0){out.project=value;i+=step}break}case"--engine":{const{value,step}=takeValue(i,"--engine",inline);if(value!==void 0){out.engine=value;i+=step}break}case"--interval":case"--max-cycles":{const{value,step}=takeValue(i,arg,inline);if(value!==void 0){const n=Number.parseInt(value,10);if(Number.
|
|
14
|
-
isInteger(n)&&n>0){if(arg==="--interval")out.interval=n;else out.maxCycles=n}else{out.unknown.push(inline!==void 0?raw:`${arg} ${value}`)}i+=step}break}case"--yes":case"-y":out.yes=true;break;case"--ai":{const{value:v,step}=takeValue(i,"--ai",inline);if(v!==void 0){out.ais=[...out.ais??[],v];i+=step}break}case"--no-ai-config-file":out.noAiConfigFile=true;break;case"--workspace":{const{value:v,step}=takeValue(i,"--workspace",inline);if(v!==void 0){out.workspace=v;i+=step}break}case"--ai-config-fi\
|
|
15
|
-
le":{const{value:v,step}=takeValue(i,"--ai-config-file",inline);if(v!==void 0){out.aiConfigFile=v;i+=step}break}case"--verbose":out.verbose=true;break;case"--now":{const{value:v,step}=takeValue(i,"--now",inline);if(v!==void 0){out.scheduleNow=v;i+=step}break}case"--counts":{const{value:v,step}=takeValue(i,"--counts",inline);if(v!==void 0){out.scheduleCounts=v;i+=step}break}case"--gate":{const{value:v,step}=takeValue(i,"--gate",inline);if(v!==void 0){out.scheduleGate=v;i+=step}break}case"--file":{
|
|
16
|
-
if(inline===void 0&&argv[i+1]==="-"){out.charterFile="-";i+=1;break}const{value:v,step}=takeValue(i,"--file",inline);if(v!==void 0){out.charterFile=v;i+=step}break}case"--out":{const{value:v,step}=takeValue(i,"--out",inline);if(v!==void 0){out.charterOut=v;i+=step}break}case"--revision":{const{value:v,step}=takeValue(i,"--revision",inline);if(v!==void 0){out.charterRevision=v;i+=step}break}case"--from":{const{value:v,step}=takeValue(i,"--from",inline);if(v!==void 0){out.revisionFrom=v;i+=step}break}case"\
|
|
17
|
-
--to":{const{value:v,step}=takeValue(i,"--to",inline);if(v!==void 0){out.revisionTo=v;i+=step}break}case"--dir":{const{value:v,step}=takeValue(i,"--dir",inline);if(v!==void 0){out.skillDir=v;i+=step}break}case"--config":{const{value:v,step}=takeValue(i,"--config",inline);if(v!==void 0){out.skillConfig=v;i+=step}break}case"--all":out.skillAll=true;break;case"--include-stopped":out.includeStopped=true;break;case"--empty":out.planEmpty=true;break;case"--check":out.planCheck=true;break;default:if(out.
|
|
18
|
-
command==="task-loop"&&out.taskLoopAction==="charter"&&out.charterOp===void 0&&isRevisionAwareOp(raw)){out.charterOp=raw;break}if(out.command==="task-loop"&&out.taskLoopAction==="schedule"){if(out.scheduleOp===void 0&&isScheduleOp(raw)){out.scheduleOp=raw;break}if(out.scheduleOp==="config"&&out.scheduleConfigOp===void 0&&(raw==="pull"||raw==="push")){out.scheduleConfigOp=raw;break}if(out.scheduleOp==="delete"&&out.scheduleId===void 0&&!raw.startsWith("-")){out.scheduleId=raw;break}}if(out.command===
|
|
19
|
-
"task-loop"&&out.taskLoopAction==="settings"&&out.settingsOp===void 0&&(raw==="push"||raw==="pull")){out.settingsOp=raw;break}if(out.command==="task-loop"&&out.taskLoopAction==="orientation"){if(out.orientationOp===void 0&&ORIENTATION_OPS.includes(raw)){out.orientationOp=raw;break}if(out.orientationOp!==void 0&&!raw.startsWith("-")){out.orientationArgs.push(raw);break}}if(out.command==="task-loop"&&out.taskLoopAction==="plan"&&out.planOp===void 0&&raw==="submit"){out.planOp="submit";break}if(out.
|
|
20
|
-
command==="task-loop"&&out.taskLoopAction==="capacity"&&out.capacityOp===void 0&&(raw==="report"||raw==="list")){out.capacityOp=raw;break}if(out.command==="task-loop"&&out.taskLoopAction==="runner"){if(out.runnerOp===void 0&&(raw==="list"||raw==="remove")){out.runnerOp=raw;break}if(out.runnerOp==="remove"&&out.runnerTargetId===void 0&&!raw.startsWith("-")){out.runnerTargetId=raw;break}}if(out.command==="task-loop"&&out.taskLoopAction==="skill"){if(out.skillOp===void 0&&(isRevisionAwareOp(raw)||isSkillManageOp(
|
|
21
|
-
raw)||raw==="check")){out.skillOp=raw;break}if(out.skillOp!==void 0&&out.skillName===void 0&&!raw.startsWith("-")){out.skillName=raw;break}}out.unknown.push(raw)}}if(out.command!=="login"&&out.loginMethod!=="browser"){out.unknown.push(out.loginMethod==="password"?"--password":"--token");out.loginMethod="browser"}if(out.permissionMode!==void 0&&out.command!=="tui"&&out.command!=="print"){out.unknown.push("--permission-mode");delete out.permissionMode}if(out.command!=="tui"&&out.command!=="print"){
|
|
22
|
-
if(out.allowedTools.length>0)out.unknown.push("--allowed-tools");if(out.disallowedTools.length>0)out.unknown.push("--disallowed-tools");out.allowedTools=[];out.disallowedTools=[]}if(out.loginNoBrowser&&!(out.command==="login"&&out.loginMethod==="browser")){out.unknown.push("--no-browser");out.loginNoBrowser=false}if(out.command==="logout"&&out.stopForce){out.logoutForce=true;out.stopForce=false}if(out.command!=="task-loop"){if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("-\
|
|
23
|
-
-daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.stopForce)out.unknown.push("--force");if(out.stopDrain)out.unknown.push("--drain");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles");if(out.project!==void 0)out.unknown.push("--project");if(out.verbose)out.unknown.push("--verbose");if(out.scheduleNow!==void 0)out.unknown.push("--now");if(out.scheduleCounts!==void 0)
|
|
24
|
-
out.unknown.push("--counts");if(out.scheduleGate!==void 0)out.unknown.push("--gate");if(out.ais!==void 0)out.unknown.push("--ai");if(out.workspace!==void 0)out.unknown.push("--workspace");if(out.aiConfigFile!==void 0)out.unknown.push("--ai-config-file");if(out.noAiConfigFile)out.unknown.push("--no-ai-config-file");if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision");if(out.skillDir!==
|
|
25
|
-
void 0)out.unknown.push("--dir");if(out.skillAll)out.unknown.push("--all");if(out.skillConfig!==void 0)out.unknown.push("--config");if(out.revisionFrom!==void 0)out.unknown.push("--from");if(out.revisionTo!==void 0)out.unknown.push("--to");if(out.planEmpty)out.unknown.push("--empty");if(out.planCheck)out.unknown.push("--check")}if(out.yes&&out.command!=="task-loop"&&!isDomainRoute)out.unknown.push("--yes");const acceptsOutput=isDomainRoute||out.command==="whoami"||out.command==="task-loop"&&out.
|
|
26
|
-
taskLoopAction==="status"||out.command==="task-loop"&&out.taskLoopAction==="skill"&&(out.skillOp==="list"||out.skillOp==="show"||out.skillOp==="check")||out.command==="task-loop"&&out.taskLoopAction==="runner"||out.command==="task-loop"&&out.taskLoopAction==="capacity"&&out.capacityOp==="list";if(!acceptsOutput){if(out.output!==void 0)out.unknown.push("--output");if(out.query!==void 0)out.unknown.push("--query")}else if(out.command==="task-loop"&&(out.skillOp==="check"||out.taskLoopAction==="run\
|
|
27
|
-
ner"&&out.runnerOp==="remove")&&out.query!==void 0){out.unknown.push("--query")}if(!isDomainRoute){if(out.dryRun)out.unknown.push("--dry-run");if(out.debug)out.unknown.push("--debug");if(out.refresh)out.unknown.push("--refresh")}if(out.command==="api"&&out.refresh){out.unknown.push("--refresh");out.refresh=false}if(out.command==="task-loop"&&(out.taskLoopAction!=="schedule"||out.scheduleOp!==void 0)){if(out.verbose)out.unknown.push("--verbose");if(out.scheduleNow!==void 0)out.unknown.push("--now");
|
|
28
|
-
if(out.scheduleCounts!==void 0)out.unknown.push("--counts");if(out.scheduleGate!==void 0)out.unknown.push("--gate")}if(out.command==="task-loop"&&out.taskLoopAction!=="stop"&&out.stopForce){out.unknown.push("--force")}if(out.command==="task-loop"&&out.taskLoopAction!=="stop"&&out.stopDrain){out.unknown.push("--drain")}if(out.command==="task-loop"&&out.taskLoopAction==="stop"&&out.stopForce&&out.stopDrain){out.unknown.push("--force \u3068 --drain \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093");
|
|
29
|
-
out.stopForce=false;out.stopDrain=false}if(out.command==="task-loop"&&out.taskLoopAction!=="setup"){const yesConfirms=out.taskLoopAction==="charter"||out.taskLoopAction==="skill"||out.taskLoopAction==="settings"||out.taskLoopAction==="orientation"&&out.orientationOp!=="show"||out.taskLoopAction==="runner"&&out.runnerOp==="remove"||out.taskLoopAction==="schedule"&&out.scheduleOp!==void 0&&out.scheduleOp!=="list";if(out.yes&&!yesConfirms)out.unknown.push("--yes");if(out.ais!==void 0)out.unknown.push(
|
|
30
|
-
"--ai");if(out.workspace!==void 0)out.unknown.push("--workspace");if(out.aiConfigFile!==void 0)out.unknown.push("--ai-config-file");if(out.noAiConfigFile)out.unknown.push("--no-ai-config-file")}if(out.command==="task-loop"&&(out.taskLoopAction==="stop"||out.taskLoopAction==="status")){if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.
|
|
31
|
-
unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}if(out.command==="task-loop"&&out.taskLoopAction==="setup"){if(out.engine!==void 0)out.unknown.push("--engine");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}if(out.command==="task-loop"&&out.taskLoopAction===
|
|
32
|
-
"charter"){if(out.charterOp===void 0){out.unknown.push("charter \u306B\u306F push / pull / history / diff / revert \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044")}if(out.charterOp!=="push"&&out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOp!=="push"&&out.charterOp!=="revert"&&out.charterRevision!==void 0){out.unknown.push("--revision")}pushRevisionFlagErrors(out,out.charterOp);if((out.charterOp==="history"||out.charterOp==="diff")&&out.yes)
|
|
33
|
-
out.unknown.push("--yes");if(out.charterOp!=="pull"&&out.charterOut!==void 0)out.unknown.push("--out");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="skill"){if(out.skillOp===void 0){out.
|
|
34
|
-
unknown.push(SKILL_OP_REQUIRED)}else if(out.skillOp==="check"){if(out.skillName!==void 0)out.unknown.push("skill check \u306F\u30B9\u30AD\u30EB\u540D\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306E\u5168\u30B9\u30AD\u30EB\u3092\u691C\u67FB\u3057\u307E\u3059\uFF09");if(out.skillAll)out.unknown.push("--all");if(out.yes)out.unknown.push("--yes")}else if(out.skillOp==="list"&&out.skillAll){out.unknown.push("--all")}else if(out.skillOp==="list"&&out.skillName!==void 0){out.
|
|
35
|
-
unknown.push(`skill list \u306F\u30B9\u30AD\u30EB\u540D\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093: ${out.skillName}`)}else if(out.skillOp==="list"){}else if(out.skillOp!=="push"&&out.skillOp!=="pull"&&out.skillAll){out.unknown.push(`skill ${out.skillOp} \u306F --all \u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093\uFF08\u30B9\u30AD\u30EB\u540D\u30921\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09`)}else if(out.skillName===void 0&&!out.skillAll){out.unknown.push(out.skillOp==="\
|
|
36
|
-
push"||out.skillOp==="pull"?`skill ${out.skillOp} \u306B\u306F\u30B9\u30AD\u30EB\u540D\u304B --all \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`:`skill ${out.skillOp} \u306B\u306F\u30B9\u30AD\u30EB\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`)}else if(out.skillName!==void 0&&out.skillAll){out.unknown.push("\u30B9\u30AD\u30EB\u540D\u3068 --all \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093")}if(out.skillOp!=="push"&&out.skillOp!=="revert"&&out.skillOp!==
|
|
37
|
-
"delete"&&out.charterRevision!==void 0){out.unknown.push("--revision")}pushRevisionFlagErrors(out,out.skillOp);if((out.skillOp==="history"||out.skillOp==="diff"||out.skillOp==="list"||out.skillOp==="show")&&out.yes){out.unknown.push("--yes")}if(out.skillOp!=="push"&&out.skillOp!=="pull"&&out.skillDir!==void 0)out.unknown.push("--dir");if(out.skillOp!=="check"&&out.skillConfig!==void 0)out.unknown.push("--config");if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.
|
|
38
|
-
unknown.push("--out");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="settings"){if(out.settingsOp===void 0)out.unknown.push("settings \u306B\u306F push / pull \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");
|
|
39
|
-
if(out.settingsOp!=="push"&&out.charterFile!==void 0)out.unknown.push("--file");if(out.settingsOp!=="push"&&out.charterRevision!==void 0)out.unknown.push("--revision");if(out.settingsOp!=="pull"&&out.charterOut!==void 0)out.unknown.push("--out");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==
|
|
40
|
-
void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="orientation"){if(out.orientationOp===void 0)out.unknown.push(`orientation \u306B\u306F ${ORIENTATION_OPS.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`);if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)
|
|
41
|
-
out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="plan"){if(out.planOp===void 0)out.unknown.push("plan \u306B\u306F submit \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revisi\
|
|
42
|
-
on");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="capacity"){if(out.capacityOp===void 0)out.unknown.push("capacity \u306B\u306F report / list \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");
|
|
43
|
-
if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="tas\
|
|
44
|
-
k-loop"&&out.taskLoopAction==="runner"){if(out.runnerOp===void 0)out.unknown.push("runner \u306B\u306F list / remove \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(out.runnerOp==="remove"&&out.runnerTargetId===void 0){out.unknown.push("runner remove \u306B\u306F runner_id \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044")}if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==
|
|
45
|
-
void 0)out.unknown.push("--revision");if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"&&out.taskLoopAction==="schedule"&&out.scheduleOp!==void 0){const op=out.scheduleOp;const takesFile=op==="push"||op==="config"&&
|
|
46
|
-
out.scheduleConfigOp==="push";if(op==="config"&&out.scheduleConfigOp===void 0){out.unknown.push("schedule config \u306B\u306F pull \u304B push \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044")}if(op==="delete"&&out.scheduleId===void 0)out.unknown.push("schedule delete \u306B\u306F\u5B9A\u7FA9ID\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(takesFile&&out.charterFile===void 0)out.unknown.push(`schedule ${op==="push"?"push":"config push"} \u306B\u306F --file <\u30D1\u30B9> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`);
|
|
47
|
-
if(!takesFile&&out.charterFile!==void 0)out.unknown.push("--file");if(!(op==="config"&&out.scheduleConfigOp==="pull")&&out.charterOut!==void 0)out.unknown.push("--out");if((op==="list"||op==="config"&&out.scheduleConfigOp!=="push")&&out.charterRevision!==void 0){out.unknown.push("--revision")}if(out.safe)out.unknown.push("--safe");if(out.daemon)out.unknown.push("--daemon");if(out.forceRunner)out.unknown.push("--force-runner");if(out.engine!==void 0)out.unknown.push("--engine");if(out.interval!==
|
|
48
|
-
void 0)out.unknown.push("--interval");if(out.maxCycles!==void 0)out.unknown.push("--max-cycles")}else if(out.command==="task-loop"){if(out.charterFile!==void 0)out.unknown.push("--file");if(out.charterOut!==void 0)out.unknown.push("--out");if(out.charterRevision!==void 0)out.unknown.push("--revision")}if(out.includeStopped&&!(out.command==="task-loop"&&out.taskLoopAction==="capacity"&&out.capacityOp==="list")){out.unknown.push("--include-stopped")}if(out.command==="task-loop"&&out.taskLoopAction!==
|
|
49
|
-
"skill"){if(out.skillDir!==void 0)out.unknown.push("--dir");if(out.skillAll)out.unknown.push("--all");if(out.skillConfig!==void 0)out.unknown.push("--config")}if(out.command==="task-loop"&&out.taskLoopAction!=="skill"&&out.taskLoopAction!=="charter"){if(out.revisionFrom!==void 0)out.unknown.push("--from");if(out.revisionTo!==void 0)out.unknown.push("--to")}if(out.command==="task-loop"&&out.taskLoopAction!=="plan"){if(out.planEmpty)out.unknown.push("--empty");if(out.planCheck)out.unknown.push("--\
|
|
50
|
-
check")}return out}function isScheduleOp(raw){return raw==="list"||raw==="push"||raw==="delete"||raw==="config"}function isSkillManageOp(raw){return raw==="list"||raw==="show"||raw==="delete"}var SKILL_OP_REQUIRED="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";function isRevisionAwareOp(raw){return raw==="push"||raw==="pull"||raw==="history"||raw==="diff"||raw==="revert"}
|
|
51
|
-
function pushRevisionFlagErrors(out,op){if(op!=="diff"&&out.revisionFrom!==void 0)out.unknown.push("--from");if(op!=="diff"&&op!=="revert"&&out.revisionTo!==void 0)out.unknown.push("--to")}export{GLOBAL_FLAGS,parseArgv};
|
package/dist/chunk-TJQZYYG3.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
-
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{splitFlagToken}from"./chunk-OKATZ4SN.js";var BUILTIN_COMMANDS=["login","logout","whoami","update","task-loop"];var TASK_LOOP_ACTIONS=["run","status","stop","schedule","setup","charter","skill","settings","orientation","plan","capacity","runner"];var VALUE_FLAGS=new Set(["-p","--print","--profile","--tenant","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--project","--engine","--interval","--max-cycles","--ai","--workspace","--ai-config-file","--now","--counts","--gate","--file","--out","--revision","--di\
|
|
4
|
-
r","--from","--to","--config","--output","--query"]);var BOOLEAN_FLAGS=new Set(["-h","--help","-v","--version","--no-tui","--doctor","--password","--token","--no-browser","--safe","--daemon","--force-runner","--force","--drain","--yes","-y","--no-ai-config-file","--verbose","--all","--empty","--check","--include-stopped","--dry-run","--debug","--refresh"]);function dispatch(argv,limit=2){const tokens=[];const indexes=[];let truncated=false;for(let i=0;i<argv.length;i++){const arg=argv[i];if(arg===
|
|
5
|
-
void 0)continue;if(arg.startsWith("-")&&arg!=="-"){const{name,value:inline}=splitFlagToken(arg);if(BOOLEAN_FLAGS.has(name)){if(inline!==void 0){truncated=true;break}continue}if(VALUE_FLAGS.has(name)){if(inline!==void 0)continue;const next=argv[i+1];if(next!==void 0&&(!next.startsWith("-")||next==="-"))i++;continue}truncated=true;break}if(arg===""||arg==="-")continue;if(tokens.length>=limit)break;tokens.push(arg);indexes.push(i)}return{tokens,indexes,truncated}}var TASK_LOOP_QUEUE_ACTIONS=["item",
|
|
6
|
-
"history","plan-history"];var QUEUE_DOMAIN="agent-loop";function rewriteQueueCommand(argv){const{tokens,indexes}=dispatch(argv);const[first,second]=tokens;if(first===QUEUE_DOMAIN||first==="help"&&second===QUEUE_DOMAIN)return{argv,moved:QUEUE_DOMAIN};const[firstIndex,secondIndex]=indexes;if(first!=="task-loop"||second===void 0||firstIndex===void 0||secondIndex===void 0||!TASK_LOOP_QUEUE_ACTIONS.includes(second)){return{argv}}const next=[...argv];next[firstIndex]=QUEUE_DOMAIN;if(second==="item")next.
|
|
7
|
-
splice(secondIndex,1);return{argv:next}}var MOVED_QUEUE_COMMAND_MESSAGE=`\`twp agent-loop\` \u306F \`twp task-loop\` \u306B\u7D71\u5408\u3057\u307E\u3057\u305F\u3002\u6B21\u306E\u3088\u3046\u306B\u6253\u3063\u3066\u304F\u3060\u3055\u3044:
|
|
8
|
-
twp agent-loop <\u64CD\u4F5C> ... \u2192 twp task-loop item <\u64CD\u4F5C> ...
|
|
9
|
-
twp agent-loop history list ... \u2192 twp task-loop history list ...
|
|
10
|
-
twp agent-loop plan-history list ... \u2192 twp task-loop plan-history list ...
|
|
11
|
-
\u8A73\u3057\u304F\u306F twp task-loop item help
|
|
12
|
-
`;function isBuiltin(token){return token!==void 0&&BUILTIN_COMMANDS.includes(token)}function isTaskLoopAction(token){return token!==void 0&&TASK_LOOP_ACTIONS.includes(token)}function resolveRoute(result){const{tokens,indexes}=result;const[first,second]=tokens;const firstIndex=indexes[0];if(first===void 0||firstIndex===void 0)return{kind:"none",consumed:[]};const consumed=[firstIndex];const secondIndex=indexes[1];if(isBuiltin(first)){if(first==="task-loop"&&isTaskLoopAction(second)){if(secondIndex!==
|
|
13
|
-
void 0)consumed.push(secondIndex);return{kind:"builtin",command:first,action:second,consumed}}return{kind:"builtin",command:first,...first==="task-loop"?{action:"run"}:{},consumed}}if(second!==void 0&&secondIndex!==void 0)consumed.push(secondIndex);return{kind:"domain",domain:first,...second!==void 0?{operation:second}:{},consumed}}export{BUILTIN_COMMANDS,TASK_LOOP_ACTIONS,VALUE_FLAGS,BOOLEAN_FLAGS,dispatch,TASK_LOOP_QUEUE_ACTIONS,QUEUE_DOMAIN,rewriteQueueCommand,MOVED_QUEUE_COMMAND_MESSAGE,resolveRoute};
|