@tocca-systems/twp-cli 0.77.2 → 0.79.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 +14 -0
- package/README.md +56 -15
- package/dist/{agent-76W4NFZE.js → agent-WTDLGRNM.js} +3 -3
- package/dist/{agent-loop-6Q5QQC5H.js → agent-loop-ZGHJGHFQ.js} +32 -32
- package/dist/{ai-dispatch-U2MEAOHY.js → ai-dispatch-DJ5JT5BE.js} +1 -1
- package/dist/analysis-H52FJIFO.js +5 -0
- package/dist/{announcement-HYMSN6ZR.js → announcement-RTTVGW4K.js} +2 -2
- package/dist/{api-command-D3H2QWSH.js → api-command-Y6J7EAOT.js} +4 -4
- package/dist/{app-LH2Z63XY.js → app-YVRIMXZY.js} +5 -5
- package/dist/{attendance-correct-7IKTSZ6I.js → attendance-correct-OLWRCDP4.js} +2 -2
- package/dist/{attendance-lists-7SOG6G4N.js → attendance-lists-TBUZCRKK.js} +2 -2
- package/dist/{auto-update-YMI3F44R.js → auto-update-FXXQHBV5.js} +1 -1
- package/dist/{auto-update-worker-VG77U4UA.js → auto-update-worker-6K24JYLQ.js} +2 -2
- package/dist/{backlog-IJTBHL3Z.js → backlog-HDDV2NTC.js} +37 -31
- package/dist/{budget-ZWB346BP.js → budget-T246BG2P.js} +2 -2
- package/dist/{chunk-MZVXEYOV.js → chunk-22CRY6JR.js} +1 -1
- package/dist/{chunk-DLDDMXZT.js → chunk-4RNL462J.js} +1 -1
- package/dist/{chunk-47C3XM23.js → chunk-5YJAT7HE.js} +1 -1
- package/dist/chunk-64VHXDB6.js +11 -0
- package/dist/{chunk-436IBRP4.js → chunk-6JAOPRD5.js} +1 -1
- package/dist/{chunk-DYNNGNXR.js → chunk-7PTFN3H7.js} +1 -1
- package/dist/{chunk-AITUAHWK.js → chunk-CADCERVL.js} +1 -1
- package/dist/{chunk-NWI2TBO6.js → chunk-CH6QU76P.js} +1 -1
- package/dist/{chunk-MTUOPTBS.js → chunk-CZVQS3WP.js} +2 -2
- package/dist/{chunk-H7MIIYRN.js → chunk-DELIIGWE.js} +1 -1
- package/dist/{chunk-R4Y3OLFY.js → chunk-DJ5OD2HW.js} +18 -18
- package/dist/{chunk-4VAWX7TW.js → chunk-DLJQE2B5.js} +1 -1
- package/dist/{chunk-4VZKNEVN.js → chunk-EDF4U5BT.js} +2 -1
- package/dist/{chunk-XG2JN66A.js → chunk-HKEW6XIC.js} +2 -2
- package/dist/{chunk-AVFQ2LM5.js → chunk-HYBXFEHH.js} +1 -1
- package/dist/chunk-IVFSEXD3.js +48 -0
- package/dist/{chunk-5WTFZJT7.js → chunk-JQBXLZTJ.js} +1 -1
- package/dist/{chunk-RQEX2WC5.js → chunk-KZQGIM2C.js} +1 -1
- package/dist/{chunk-W4E4F2ZA.js → chunk-MLRBDF44.js} +1 -1
- package/dist/{chunk-3WFZOOXZ.js → chunk-MO2UEAWW.js} +1 -1
- package/dist/{chunk-SAH5WS3K.js → chunk-MPX2Q3BJ.js} +1 -1
- package/dist/{chunk-L7T2CQ3M.js → chunk-NLCJXS5S.js} +2 -2
- package/dist/{chunk-GYXKBPEN.js → chunk-NTT2QG3J.js} +2 -2
- package/dist/{chunk-DLD736A2.js → chunk-OW23MAVO.js} +1 -1
- package/dist/{chunk-3WPHZXST.js → chunk-QXYY7DUV.js} +2 -2
- package/dist/{chunk-6SAHK3OR.js → chunk-RCUI6WWU.js} +1 -1
- package/dist/{chunk-GHE6X45G.js → chunk-RSSPNFSK.js} +7 -7
- package/dist/{chunk-AM7Y4QRF.js → chunk-U5EYLW6X.js} +2 -2
- package/dist/{chunk-4OJD5FKD.js → chunk-UZLHJ2RF.js} +2 -2
- package/dist/{chunk-GQEXST5N.js → chunk-V3RZ4RFP.js} +1 -1
- package/dist/chunk-VERYHAWV.js +13 -0
- package/dist/{chunk-YM4U6A4Y.js → chunk-VLCR2U77.js} +1 -1
- package/dist/{chunk-4H3ECPJF.js → chunk-VYIYENEU.js} +1 -1
- package/dist/{chunk-HZYP3BMS.js → chunk-X2WD2H3B.js} +2 -2
- package/dist/chunk-XNYQH5JI.js +44 -0
- package/dist/{chunk-RMOBVFPJ.js → chunk-YV65V2F6.js} +1 -1
- package/dist/cli.js +65 -25
- package/dist/{commands-445XWMKY.js → commands-UDG7E3X3.js} +20 -20
- package/dist/{commands-YJU4HHPP.js → commands-ZIRZVBH6.js} +2 -2
- package/dist/{company-NXL4WVLD.js → company-2CRWKBJL.js} +3 -3
- package/dist/{completion-RL6VCPB5.js → completion-C6ZQCDT2.js} +8 -7
- package/dist/config-XYWRBIC6.js +3 -0
- package/dist/{configure-3H3CGGBI.js → configure-3JID6MQ5.js} +7 -3
- package/dist/{contract-MC6HSQER.js → contract-73RVPBYM.js} +2 -2
- package/dist/{department-3YEKQJ6I.js → department-GPVHVFFP.js} +2 -2
- package/dist/{deposit-RFTXWS5D.js → deposit-3I3NV556.js} +2 -2
- package/dist/dispatch-HHWTJ3P4.js +3 -0
- package/dist/{domain-knowledge-EXMD2NMI.js → domain-knowledge-5SCZLCPF.js} +2 -2
- package/dist/{estimate-RIJRRKZZ.js → estimate-NLKTWCYI.js} +4 -4
- package/dist/{evaluation-ESIPIC3K.js → evaluation-VP7OFTBS.js} +1 -1
- package/dist/{expense-ISK4RPCY.js → expense-O2O4623X.js} +2 -2
- package/dist/{fiscal-year-F2DVA2GB.js → fiscal-year-ZTCSF46U.js} +2 -2
- package/dist/{holiday-5ZAH6U6Z.js → holiday-WDI4CSNL.js} +2 -2
- package/dist/{inquiry-3KEU4MAN.js → inquiry-4Q4BRYM3.js} +2 -2
- package/dist/{invoice-BTVMPVKS.js → invoice-BXSI6SMA.js} +3 -3
- package/dist/{job-title-NO5VRM5J.js → job-title-NCFHCA4M.js} +1 -1
- package/dist/{knowledge-TXUSVHRG.js → knowledge-TCADQEPU.js} +2 -2
- package/dist/{leave-VZCKDT73.js → leave-W4GHXMSE.js} +3 -3
- package/dist/{license-JVYLYTSV.js → license-XSWDXSJE.js} +2 -2
- package/dist/{logout-guard-T3IAROLQ.js → logout-guard-57LHDX6L.js} +1 -1
- package/dist/{media-AQID56Z4.js → media-D7BZTPXD.js} +3 -3
- package/dist/{notification-TSLB2ZHF.js → notification-WP7CH734.js} +2 -2
- package/dist/{onedrive-ZY3GTU26.js → onedrive-KWVOUGG6.js} +1 -1
- package/dist/{oneshot-GF6TO7AH.js → oneshot-EAXT2LLB.js} +2 -2
- package/dist/{outlook-YG7GFF44.js → outlook-GYRF5TXA.js} +1 -1
- package/dist/{plan-submit-7KDB74QH.js → plan-submit-ELEIJM6I.js} +1 -1
- package/dist/{position-IREP6O4N.js → position-H3NSDVKQ.js} +1 -1
- package/dist/{project-XIBLUUAR.js → project-HGUUMTEE.js} +2 -2
- package/dist/{prospect-UZLWLOAI.js → prospect-QY3NYP2A.js} +3 -3
- package/dist/{purchase-OLJD37QK.js → purchase-7XCGCQ2G.js} +4 -4
- package/dist/receivable-GW5WCVJ7.js +4 -0
- package/dist/{redmine-WOVVB7SU.js → redmine-644RTL42.js} +2 -2
- package/dist/{registry-GUS42T5G.js → registry-TFHSCQK3.js} +1 -1
- package/dist/{report-52ZHE57K.js → report-P74LSHTE.js} +2 -2
- package/dist/{run-DKDJACXL.js → run-EO7J3QYK.js} +2 -2
- package/dist/runner-command-SRPMAC5S.js +3 -0
- package/dist/{sales-ai-review-JBDTSY67.js → sales-ai-review-L5VW3DU3.js} +2 -2
- package/dist/{sales-master-KL5XHTVS.js → sales-master-BQML5IJT.js} +3 -3
- package/dist/{sales-numbering-NZW2RNOS.js → sales-numbering-OW4O6WH6.js} +2 -2
- package/dist/{search-FOUZEY5X.js → search-BLMSVPIL.js} +2 -2
- package/dist/{segment-3CMYFOFP.js → segment-G4IPD43F.js} +1 -1
- package/dist/{server-settings-CRH7UU45.js → server-settings-OB7JF757.js} +1 -1
- package/dist/{setup-VPHP4HDM.js → setup-FMSAHRGZ.js} +1 -1
- package/dist/{skill-U6757V7A.js → skill-4TSTVUXY.js} +2 -2
- package/dist/staffing-board-MQREMSVJ.js +110 -0
- package/dist/status-command-C42CVQ3Q.js +17 -0
- package/dist/{supplier-payment-NG3PYZAH.js → supplier-payment-KRLYWEKY.js} +3 -3
- package/dist/{support-JBL45TWL.js → support-ITRXFVMK.js} +2 -2
- package/dist/{task-OR5JLUKO.js → task-AGNMPS4F.js} +5 -4
- package/dist/{teams-RLMFGND2.js → teams-MZR3256V.js} +1 -1
- package/dist/{update-NCAVUXSX.js → update-7GYGZEK3.js} +1 -1
- package/dist/{user-4BL2ILYK.js → user-U4VHKBLE.js} +3 -3
- package/dist/{user-contract-type-XHCKC6T7.js → user-contract-type-HDA5TITL.js} +2 -2
- package/dist/{worker-agent-XTDV36WT.js → worker-agent-52PXQO4N.js} +2 -2
- package/dist/{workflow-Q7XCMDRH.js → workflow-4NC2C4TX.js} +2 -2
- package/package.json +1 -1
- package/dist/analysis-7PNFFLPQ.js +0 -5
- package/dist/chunk-6C75QARV.js +0 -49
- package/dist/chunk-BMJMOUBS.js +0 -11
- package/dist/config-3CNEQ7KN.js +0 -3
- package/dist/receivable-JNXWOLJN.js +0 -4
- package/dist/status-command-3GA23BGD.js +0 -17
- /package/dist/{skill-manage-command-QYJLCLDK.js → skill-manage-command-UOWZCF6R.js} +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{reasonOf,unwrap}from"./chunk-MYBIPHZ7.js";import{apiExit,errorDetail,pickNumber,shellQuote,str}from"./chunk-A4LFG7MW.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";var LIST_FORMATS=["json","table","tsv"];var RUNNER_ID_PATTERN=/^[A-Za-z0-9._-]{1,128}$/;async function runRunnerCommand(deps,opts){const io={out:deps.out??(t=>void process.stdout.write(stripTerminalControls(t))),err:deps.err??(t=>void process.stderr.write(stripTerminalControls(t))),isTty:deps.isTty??process.stdout.isTTY===true};try{return opts.op==="list"?await listRunners(deps.api,opts,io):await removeRunner(deps.api,opts,io)}catch(e){if(e instanceof UsageError){io.err(`${e.message}
|
|
4
|
+
${e.hint?`${e.hint}
|
|
5
|
+
`:""}`);return EXIT_USAGE}throw e}}function parseRunners(res){const body=unwrap(res,"runners");const raw=body["runners"];if(!Array.isArray(raw))return null;const entries=[];for(const item of raw){const r=item&&typeof item==="object"?item:{};const runnerId=str(r["runner_id"]);if(runnerId==="")return null;entries.push(toEntry(r))}return{entries,summary:{live_count:pickNumber(body,"live_count"),max_runners:pickNumber(body,"max_runners"),heartbeat_timeout:pickNumber(body,"heartbeat_timeout"),hidden_count:pickNumber(
|
|
6
|
+
body,"hidden_count"),removed_count:pickNumber(body,"removed_count"),hide_after_days:pickNumber(body,"hide_after_days")}}}function toEntry(r){const kind=str(r["kind"])||"loop";const state=kind==="loop"?r["is_live"]===true?"live":"stale":r["is_reporting"]===true?"reporting":"stale";return{runner_id:str(r["runner_id"]),kind,state,hostname:str(r["hostname"]),phase:str(r["phase"]),last_seen_at:str(r["last_seen_at"]),last_reported_at:str(r["last_reported_at"]),version:str(r["version"])}}async function listRunners(api,opts,io){
|
|
7
|
+
const{resolveOutputFormat}=await import("./format-F6PPBPY5.js");const format=resolveOutputFormat({...opts.output!==void 0?{flag:opts.output}:{},isTty:io.isTty});if(format===null||!LIST_FORMATS.includes(format)){throw new UsageError(`runner list \u306E --output \u306B\u300C${opts.output??""}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${LIST_FORMATS.join(" / ")} \u3067\u3059`)}const res=await api.request("GET","/runners");if(!res.ok){io.
|
|
8
|
+
err(`\u26D4 \u30E9\u30F3\u30CA\u30FC\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
|
|
9
|
+
`);return apiExit(res)}const parsed=parseRunners(res);if(parsed===null){io.err(`\u26D4 \u30E9\u30F3\u30CA\u30FC\u4E00\u89A7\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
|
|
10
|
+
`);return EXIT_API_SERVER}const{entries,summary}=parsed;const{evaluateQuery}=await import("./query-XEOVFI4D.js");const{renderOutput}=await import("./render-4SBLHU4J.js");if(format==="json"){const value={...summary,runners:entries};const selected2=opts.query===void 0?value:await evaluateQuery(opts.query,value);const text2=renderOutput(selected2,"json");io.out(text2.endsWith("\n")?text2:`${text2}
|
|
11
|
+
`);return EXIT_OK}io.err(summaryLine(summary));const selected=opts.query===void 0?entries:await evaluateQuery(opts.query,entries);if(opts.query===void 0&&entries.length===0){io.err("\u4E00\u89A7\u306B\u8868\u793A\u3055\u308C\u308B\u767B\u9332\u306F\u3042\u308A\u307E\u305B\u3093\n");return EXIT_OK}const text=renderOutput(selected,format);io.out(text.endsWith("\n")?text:`${text}
|
|
12
|
+
`);if(opts.query===void 0&&entries.some(e=>e.state==="stale")){io.err(`${removeHint(opts)}
|
|
13
|
+
`)}return EXIT_OK}function summaryLine(s){const n=v=>v===null?"?":String(v);const parts=[`\u7A3C\u50CD ${n(s.live_count)} / ${n(s.max_runners)}\uFF08\u6B7B\u6D3B\u3057\u304D\u3044\u5024 ${n(s.heartbeat_timeout)}\u79D2\uFF09`];parts.push(`${n(s.hide_after_days)}\u65E5\u4EE5\u4E0A\u5FDC\u7B54\u306A\u3057\u3067\u975E\u8868\u793A ${n(s.hidden_count)}\u53F0`);if(s.removed_count!==null)parts.push(`\u624B\u52D5\u3067\u5916\u3057\u305F\u767B\u9332 ${s.removed_count}\u53F0`);return`\u30E9\u30F3\u30CA\u30FC: ${parts.
|
|
14
|
+
join("\u30FB")}
|
|
15
|
+
`}function hasRemovableRunner(list){return list.some(r=>r.is_live!==true&&r.is_reporting!==true)}function removeHint(opts){const parts=["twp task-loop runner remove","--project",shellQuote(opts.projectRef)];if(opts.profile!==void 0)parts.push("--profile",shellQuote(opts.profile));parts.push("<runner_id>");return` \u203B \u7F6E\u63DB\u30FB\u5EC3\u6B62\u3057\u305F\u6A5F\u306E stale \u306A\u767B\u9332\u306F ${parts.join(" ")} \u3067\u4E00\u89A7\u304B\u3089\u5916\u305B\u307E\u3059`}async function removeRunner(api,opts,io){
|
|
16
|
+
const runnerId=opts.runnerId;if(runnerId===void 0){io.err("runner remove \u306B\u306F runner_id \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08runner list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09\n");return EXIT_USAGE}if(!RUNNER_ID_PATTERN.test(runnerId)||runnerId==="."||runnerId===".."){io.err(`runner_id \u304C\u4E0D\u6B63\u3067\u3059: ${runnerId}\uFF08\u82F1\u6570\u5B57\u3068 . _ - \u3060\u3051\u306E128\u6587\u5B57\u4EE5\u5185\uFF09
|
|
17
|
+
`);return EXIT_USAGE}if(opts.output!==void 0&&opts.output!=="json"){throw new UsageError(`runner remove \u306E --output \u306B\u300C${opts.output}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,"\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F json \u3060\u3051\u3067\u3059")}const json=opts.output==="json";if(!opts.yes){const res2=await api.request("GET","/runners");if(!res2.ok){io.err(`\u26D4 \u30E9\u30F3\u30CA\u30FC\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(
|
|
18
|
+
res2)}\uFF09
|
|
19
|
+
`);return apiExit(res2)}const parsed=parseRunners(res2);if(parsed===null){io.err(`\u26D4 \u30E9\u30F3\u30CA\u30FC\u4E00\u89A7\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res2.raw.slice(0,120)}\uFF09
|
|
20
|
+
`);return EXIT_API_SERVER}const target=parsed.entries.find(e=>e.runner_id===runnerId);if(target===void 0){if(json)io.out(`${JSON.stringify({removed:false,reason:"not_listed",runner_id:runnerId})}
|
|
21
|
+
`);io.err(`${runnerId} \u306F\u4E00\u89A7\u306B\u3042\u308A\u307E\u305B\u3093\uFF08\u672A\u767B\u9332\u304B\u3001\u65E2\u306B\u4E00\u89A7\u304B\u3089\u5916\u308C\u3066\u3044\u307E\u3059\uFF09\u3002\u4F55\u3082\u5909\u66F4\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
|
|
22
|
+
`);return EXIT_FAILURE}if(target.state!=="stale"){if(json)io.out(`${JSON.stringify({removed:false,reason:target.state,runner:target})}
|
|
23
|
+
`);io.err(`${describeTarget(target)}
|
|
24
|
+
${blockedMessage(target.state)}
|
|
25
|
+
`);return EXIT_FAILURE}if(json){io.out(`${JSON.stringify({removed:false,reason:"confirm_required",runner:target,confirm:confirmCommand(opts,runnerId)})}
|
|
26
|
+
`)}else{io.out(`${describeTarget(target)}
|
|
27
|
+
`);io.out(`
|
|
28
|
+
\u5916\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u4E00\u89A7\u304B\u3089\u5916\u3059\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u767B\u9332\u306F\u975E\u8868\u793A\u306B\u306A\u308B\u3060\u3051\u3067\u3001\u540C\u3058 runner_id \u304C\u518D\u3073\u5FDC\u7B54\u3059\u308C\u3070\u4E00\u89A7\u306B\u623B\u308A\u307E\u3059\uFF09:
|
|
29
|
+
${confirmCommand(opts,runnerId)}
|
|
30
|
+
`)}return EXIT_USAGE}const res=await api.request("DELETE",`/runners/${encodeURIComponent(runnerId)}`);if(!res.ok){const reason=reasonOf(res);if(res.status===409&&(reason==="live"||reason==="reporting")){if(json)io.out(`${JSON.stringify({removed:false,reason,runner_id:runnerId})}
|
|
31
|
+
`);io.err(`\u26D4 ${runnerId}: ${blockedMessage(reason)}
|
|
32
|
+
`);return EXIT_API_CLIENT}if(res.status===404&&reason==="not_found"){if(json)io.out(`${JSON.stringify({removed:false,reason,runner_id:runnerId})}
|
|
33
|
+
`);io.err(`${runnerId} \u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u4F55\u3082\u5909\u66F4\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
|
|
34
|
+
`);return EXIT_FAILURE}io.err(`\u26D4 ${runnerId}: \u4E00\u89A7\u304B\u3089\u5916\u305B\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
|
|
35
|
+
`);return apiExit(res)}const body=unwrap(res,"removed");if(body["removed"]!==true){io.err(`\u26A0\uFE0F ${runnerId}: \u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\u3002\u5916\u308C\u305F\u304B\u3092 runner list \u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
|
|
36
|
+
`);return EXIT_API_SERVER}const runner=body["runner"]&&typeof body["runner"]==="object"?toEntry(body["runner"]):null;if(json){io.out(`${JSON.stringify({removed:true,runner_id:runnerId,runner})}
|
|
37
|
+
`)}else{io.out(`${runnerId}: \u4E00\u89A7\u304B\u3089\u5916\u3057\u307E\u3057\u305F${runner?.hostname?`\uFF08@${runner.hostname}\uFF09`:""}\u3002\u540C\u3058 runner_id \u304C\u518D\u3073\u5FDC\u7B54\u3059\u308C\u3070\u4E00\u89A7\u306B\u623B\u308A\u307E\u3059\u3002
|
|
38
|
+
`)}return EXIT_OK}function describeTarget(e){const lastSeen=e.kind==="loop"?e.last_seen_at:e.last_reported_at||e.last_seen_at;return(`\u5BFE\u8C61: ${e.runner_id} [${e.state}]
|
|
39
|
+
\u7A2E\u5225: ${e.kind==="loop"?"\u30EB\u30FC\u30D7\u5B9F\u884C\u6A5F":e.kind==="capacity_reporter"?"\u67A0\u5831\u544A\u5C02\u7528\u6A5F":e.kind}
|
|
40
|
+
\u30DB\u30B9\u30C8\u540D: ${e.hostname||"\u4E0D\u660E"}
|
|
41
|
+
\u6700\u7D42\u5FDC\u7B54: ${lastSeen||"\u4E0D\u660E"}
|
|
42
|
+
`+(e.version?` \u7248: ${e.version}
|
|
43
|
+
`:"")).trimEnd()}function blockedMessage(state){return state==="reporting"?"\u3053\u306E\u67A0\u5831\u544A\u5C02\u7528\u6A5F\u306F\u5831\u544A\u304C\u7D9A\u3044\u3066\u3044\u308B\u305F\u3081\u4E00\u89A7\u304B\u3089\u5916\u305B\u307E\u305B\u3093\uFF08\u5831\u544A\u3092\u6B62\u3081\u3066\u304B\u3089\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002":"\u3053\u306E\u30E9\u30F3\u30CA\u30FC\u306F\u7A3C\u50CD\u4E2D\uFF08live\uFF09\u306E\u305F\u3081\u4E00\u89A7\u304B\u3089\u5916\u305B\u307E\u305B\u3093\u3002\u6A5F\u4F53\u3092\u6B62\u3081\u3001\u5FDC\u7B54\u304C\u9014\u7D76\u3048\u3066 stale \u306B\u306A\u3063\u3066\u304B\u3089\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}
|
|
44
|
+
function confirmCommand(opts,runnerId){const parts=["twp task-loop runner remove","--project",shellQuote(opts.projectRef)];if(opts.profile!==void 0)parts.push("--profile",shellQuote(opts.profile));parts.push(shellQuote(runnerId),"--yes");return parts.join(" ")}export{runRunnerCommand,parseRunners,hasRemovableRunner,removeHint};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{placeholderTaskKey,stepToItem}from"./chunk-QGJYT4NH.js";import{redactLoopOutput}from"./chunk-JUJSF5ZG.js";import{localDate}from"./chunk-
|
|
3
|
+
import{placeholderTaskKey,stepToItem}from"./chunk-QGJYT4NH.js";import{redactLoopOutput}from"./chunk-JUJSF5ZG.js";import{localDate}from"./chunk-RCUI6WWU.js";import{normalizeSkillName,skillOfItem}from"./chunk-FABDZBDZ.js";import{DEFAULT_SKILL_PREFIX,SKILL_PREFIX_RE,setSkillPrefix,skillCommand,skillPrefix}from"./chunk-6CS5L24D.js";import{describeError,pick,pickString}from"./chunk-O52RKZCC.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import{createHash,randomBytes}from"crypto";import fs2 from"fs";import path2 from"path";var INFLIGHT_STALE_HOURS=3;function staleFloorHours(aiTimeoutSec){return Math.ceil(aiTimeoutSec*2/3600)}function inflightStaleHours(aiTimeoutSec,baseHours=INFLIGHT_STALE_HOURS){const base=Number.isFinite(baseHours)&&baseHours>0?baseHours:INFLIGHT_STALE_HOURS;return Math.max(base,staleFloorHours(aiTimeoutSec))}function ageMinutesOf(item,now){for(const raw of[item.started_at,item.updated_at,item.dequeued_at,item.created_at]){if(!raw)continue;const ts=Date.parse(raw);if(Number.isNaN(ts))continue;return Math.
|
|
4
4
|
floor((now.getTime()-ts)/6e4)}return null}function inflightEntries(items,now=new Date,staleHours=INFLIGHT_STALE_HOURS){const staleMinutes=staleHours*60;const byKey=new Map;for(const item of items){const key=(item.task_key??"").trim();if(!key)continue;const ageMinutes=ageMinutesOf(item,now);if(ageMinutes!==null&&ageMinutes>staleMinutes)continue;const entry={key,runner:item.runner_id??"-",ageMinutes,label:(item.label??"").slice(0,60)};const prev=byKey.get(key);if(!prev||(entry.ageMinutes??-1)>(prev.
|
|
5
5
|
ageMinutes??-1))byKey.set(key,entry)}return[...byKey.values()].sort((a,b)=>a.key.localeCompare(b.key))}function formatInflightEntry(entry){const age=entry.ageMinutes===null?"\u4E0D\u660E":`${entry.ageMinutes}\u5206`;return`${entry.key} runner=${entry.runner} \u7D4C\u904E=${age}`}import fs from"fs";import path from"path";async function createItem(api,body){const res=await api.create(redactItemBody(body));if(!res.ok)return{itemId:null,detail:describeError(res)};for(const p of["item_id","id","item.item_id","item.id","data.item_id","data.id"]){const v=pickString(res.json,p);if(v)return{itemId:v,detail:""}}return{itemId:null,detail:`item_id \u3092\u8AAD\u3081\u307E\u305B\u3093: ${res.raw.slice(0,200)}`}}function redactItemBody(body){const out={...body};for(const key of["prompt","label"]){if(typeof out[key]==="string")
|
|
6
6
|
out[key]=redactLoopOutput(out[key])}return out}function reorderSucceeded(targetId,json){if(pick(json,"result")===true)return true;const raw=Array.isArray(json)?json:pick(json,"items");if(!Array.isArray(raw)||raw.length===0)return false;const items=raw;const orderOf=it=>typeof it.sort_order==="number"?it.sort_order:Number.POSITIVE_INFINITY;const hit=items.find(it=>(it.item_id??"")===targetId);if(!hit)return false;return orderOf(hit)===Math.min(...items.map(orderOf))}function queueContainsKey(items,key){
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
3
3
|
const require = __twpCreateRequire(import.meta.url);
|
|
4
|
-
import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-
|
|
4
|
+
import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chunk-IVFSEXD3.js";import"./chunk-2LOT54OO.js";import"./chunk-MLRBDF44.js";import"./chunk-VERYHAWV.js";import"./chunk-QQRJLH6B.js";import"./chunk-VSJBJXZO.js";var VERSION=true?"0.79.0":"0.0.0-dev";var HELP=`twp ${VERSION} \u2014 TWP CLI
|
|
5
5
|
|
|
6
6
|
\u4F7F\u3044\u65B9:
|
|
7
7
|
twp \u5BFE\u8A71 TUI \u3092\u8D77\u52D5
|
|
@@ -105,11 +105,34 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
|
|
|
105
105
|
\u8A08\u753BAI\u304C\u8A08\u753B\u3092\u30EB\u30FC\u30D7\u3078\u63D0\u51FA\u3059\u308B\uFF08\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u306E\u4E2D\u3067\u3060\u3051\u53D7\u3051\u4ED8\u3051\u308B\uFF09\u3002
|
|
106
106
|
step \u3054\u3068\u306B\u53D7\u7406/\u68C4\u5374\u3068\u7406\u7531\u3092\u8868\u793A\u3057\u3001\u68C4\u5374\u304C\u3042\u308C\u3070\u975E0\u3067\u7D42\u308F\u308B\u3002
|
|
107
107
|
\u51FA\u3057\u76F4\u3059\u3068\u6700\u5F8C\u306E\u63D0\u51FA\u304C\u6709\u52B9\u3002--check \u306F\u691C\u67FB\u3060\u3051\u3067\u7F6E\u304B\u306A\u3044
|
|
108
|
+
twp task-loop runner list --project <\u30AD\u30FC|UUID> [--output json|table|tsv] [--query <\u5F0F>]
|
|
109
|
+
\u30E9\u30F3\u30CA\u30FC\u767B\u9332\u306E\u4E00\u89A7\uFF08live/stale\u30FB\u30DB\u30B9\u30C8\u540D\u30FB\u6700\u7D42\u5FDC\u7B54\uFF09\u3068\u3001\u4E00\u89A7\u304B\u3089
|
|
110
|
+
\u5916\u308C\u3066\u3044\u308B\u53F0\u6570\uFF08\u5FDC\u7B54\u306A\u3057\u3067\u81EA\u52D5\u975E\u8868\u793A\uFF0F\u624B\u52D5\u3067\u5916\u3057\u305F\u767B\u9332\uFF09
|
|
111
|
+
twp task-loop runner remove --project <\u30AD\u30FC|UUID> <runner_id> [--output json]
|
|
112
|
+
\u7F6E\u63DB\u30FB\u5EC3\u6B62\u3057\u305F\u6A5F\u306E stale \u306A\u767B\u9332\u3092\u4E00\u89A7\u304B\u3089\u5916\u3059\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09\u3002
|
|
113
|
+
\u5BFE\u8C61\uFF08\u30DB\u30B9\u30C8\u540D\u30FB\u6700\u7D42\u5FDC\u7B54\uFF09\u3092\u8868\u793A\u3057\u3066\u6B62\u307E\u308A\u3001--yes \u3067\u78BA\u5B9A\u3002
|
|
114
|
+
\u7A3C\u50CD\u4E2D\uFF08live\uFF09\u306E\u767B\u9332\u306F\u5916\u305B\u306A\u3044\u3002\u540C\u3058\u6A5F\u304C\u518D\u3073\u5FDC\u7B54\u3059\u308C\u3070\u4E00\u89A7\u306B\u623B\u308B
|
|
108
115
|
twp task-loop capacity report --project <\u30AD\u30FC|UUID>
|
|
109
116
|
\u30EB\u30FC\u30D7\u3092\u56DE\u3055\u305A\u306B AI \u30A2\u30AB\u30A6\u30F3\u30C8\u67A0\u306E\u89B3\u6E2C\u5024\u30921\u56DE\u3060\u3051\u9001\u308B\uFF08\u5E38\u99D0\u3057\u306A\u3044\u3002
|
|
110
117
|
\u5B9A\u671F\u5B9F\u884C\u306F systemd timer / cron / launchd \u306B\u4EFB\u305B\u308B\uFF09\u3002\u8A2D\u5B9A\u306F\u30EB\u30FC\u30D7\u3068
|
|
111
118
|
\u540C\u3058 capacity_probe\u3002\u672A\u8A2D\u5B9A\u306A\u3089\u4F55\u3082\u305B\u305A 0\u3001\u540C\u3058\u6A5F\u306E\u30EB\u30FC\u30D7\u304C\u767B\u9332\u6E08\u307F
|
|
112
119
|
\u306A\u3089\u9001\u3089\u305A 0\u3001\u30D7\u30ED\u30FC\u30D6\u304C\u5931\u6557\u3057\u3066\u3082 error \u3092\u9001\u308C\u308C\u3070 0\u3001\u9001\u4FE1\u306E\u5931\u6557\u306F 1
|
|
120
|
+
twp task-loop item list --project <\u30AD\u30FC|UUID>
|
|
121
|
+
\u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u4E00\u89A7\u3059\u308B\uFF08--status \u3067\u7D5E\u308A\u8FBC\u3080\uFF09
|
|
122
|
+
twp task-loop item get <\u30A2\u30A4\u30C6\u30E0ID>
|
|
123
|
+
\u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E01\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
|
|
124
|
+
twp task-loop item create --prompt "/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB> <\u5F15\u6570>"
|
|
125
|
+
\u30AD\u30E5\u30FC\u306B\u30A2\u30A4\u30C6\u30E0\u3092\u6295\u5165\u3059\u308B\uFF08--priority / --label / --ai-effort\uFF09
|
|
126
|
+
twp task-loop item update <\u30A2\u30A4\u30C6\u30E0ID>
|
|
127
|
+
\u30A2\u30A4\u30C6\u30E0\u306E\u30E9\u30D9\u30EB\u30FB\u30D7\u30ED\u30F3\u30D7\u30C8\u30FBAI \u6307\u5B9A\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
128
|
+
twp task-loop item move <\u30A2\u30A4\u30C6\u30E0ID>
|
|
129
|
+
\u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u306E\u5148\u982D\u3078\u79FB\u3059\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
130
|
+
twp task-loop item delete <\u30A2\u30A4\u30C6\u30E0ID>
|
|
131
|
+
\u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
132
|
+
twp task-loop history list --since <\u65E5\u4ED8|\u65E5\u6642>
|
|
133
|
+
\u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u5B9F\u884C\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B\uFF08\u53F0\u5E33\u306E\u6B63\u672C\uFF09
|
|
134
|
+
twp task-loop plan-history list --since <\u65E5\u4ED8|\u65E5\u6642>
|
|
135
|
+
\u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u8A08\u753B\u306E\u5B9F\u884C\u8A18\u9332\u3092\u4E00\u89A7\u3059\u308B
|
|
113
136
|
twp --mode <id> \u8D77\u52D5\u6642\u306E\u30E2\u30FC\u30C9\u3092\u6307\u5B9A\uFF08dev | biz | plan\uFF09
|
|
114
137
|
twp --permission-mode <v>
|
|
115
138
|
\u30C4\u30FC\u30EB\u5B9F\u884C\u306E\u65E2\u5B9A\u3092\u4E0A\u66F8\u304D\uFF08plan | acceptEdits | denyAll\uFF09\u3002
|
|
@@ -173,20 +196,6 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
|
|
|
173
196
|
\u4ECA\u3059\u30501\u56DE\u5B9F\u884C\u3059\u308B\uFF08--yes\u30FB\u898B\u9001\u308A\u306F\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF09
|
|
174
197
|
twp agent schedule runs <\u5B9A\u671F\u5B9F\u884C>
|
|
175
198
|
\u5B9F\u884C\u5C65\u6B74\uFF08\u8D77\u52D5\u30FB\u898B\u9001\u308A\u30FB\u5931\u6557\u3068\u7406\u7531\uFF09\u3092\u4E00\u89A7\u3059\u308B
|
|
176
|
-
twp agent-loop list \u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30AD\u30E5\u30FC\u3092\u4E00\u89A7\u3059\u308B\uFF08--status \u3067\u7D5E\u308A\u8FBC\u3080\uFF09
|
|
177
|
-
twp agent-loop get <\u30A2\u30A4\u30C6\u30E0ID>
|
|
178
|
-
\u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E01\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
|
|
179
|
-
twp agent-loop create \u30AD\u30E5\u30FC\u306B\u30A2\u30A4\u30C6\u30E0\u3092\u6295\u5165\u3059\u308B\uFF08--prompt "/<\u63A5\u982D\u8F9E><\u30B9\u30AD\u30EB> <\u5F15\u6570>"\uFF09
|
|
180
|
-
twp agent-loop update <\u30A2\u30A4\u30C6\u30E0ID>
|
|
181
|
-
\u30A2\u30A4\u30C6\u30E0\u306E\u30E9\u30D9\u30EB\u30FB\u30D7\u30ED\u30F3\u30D7\u30C8\u30FBAI \u6307\u5B9A\u3092\u66F4\u65B0\u3059\u308B\uFF08\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
182
|
-
twp agent-loop move <\u30A2\u30A4\u30C6\u30E0ID>
|
|
183
|
-
\u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u306E\u5148\u982D\u3078\u79FB\u3059\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
184
|
-
twp agent-loop delete <\u30A2\u30A4\u30C6\u30E0ID>
|
|
185
|
-
\u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB\u7BA1\u7406\u8005\u306E\u307F\uFF09
|
|
186
|
-
twp agent-loop history list
|
|
187
|
-
\u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u5B9F\u884C\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B\uFF08--since \u304C\u8981\u308B\uFF09
|
|
188
|
-
twp agent-loop plan-history list
|
|
189
|
-
\u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u8A08\u753B\u306E\u5B9F\u884C\u8A18\u9332\u3092\u4E00\u89A7\u3059\u308B\uFF08--since \u304C\u8981\u308B\uFF09
|
|
190
199
|
twp project list \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E00\u89A7\u3059\u308B
|
|
191
200
|
twp project get <\u53C2\u7167> \u30D7\u30ED\u30B8\u30A7\u30AF\u30C81\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
|
|
192
201
|
twp project create \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4F5C\u6210\u3059\u308B\uFF08--name / --code \u304C\u5FC5\u9808\u30FB\u7BA1\u7406\u8005\uFF09
|
|
@@ -463,6 +472,37 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
|
|
|
463
472
|
\u4EBA\u6750KPI\u306E\u96C6\u8A08\u5BFE\u8C61\u306E\u898B\u7A4D\uFF08--department \u304C\u8981\u308B\uFF09
|
|
464
473
|
twp analysis staff-kpi settings
|
|
465
474
|
\u90E8\u7F72\u306E\u4EBA\u6750KPI\u306E\u8A2D\u5B9A\uFF08--department \u304C\u8981\u308B\uFF09
|
|
475
|
+
twp staffing-board show \u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\u306E\u8868\uFF08\u30E1\u30F3\u30D0\u30FC\xD7\u6708\u30FB--unit hours|fte|percent\u30FB\u65E2\u5B9A\u306F\u7FCC\u6708\u304B\u30894\u304B\u6708\uFF09
|
|
476
|
+
twp staffing-board cell set
|
|
477
|
+
\u30E1\u30F3\u30D0\u30FC\xD7\u6848\u4EF6\xD7\u6708\u306E\u5DE5\u6570\u3092\u8A2D\u5B9A\u3059\u308B\uFF08\u753B\u9762\u306E\u30BB\u30EB\u7DE8\u96C6\u3068\u540C\u3058\u3002\u7DE8\u96C6\u53EF\uFF0B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09
|
|
478
|
+
twp staffing-board cell history
|
|
479
|
+
\u30E1\u30F3\u30D0\u30FC\xD7\u6848\u4EF6\u306E\u5DE5\u6570\u306E\u4FEE\u6B63\u5C65\u6B74
|
|
480
|
+
twp staffing-board tentative list
|
|
481
|
+
\u4EEE\u30A2\u30B5\u30A4\u30F3\uFF08\u672A\u767B\u9332\u306E\u898B\u8FBC\u307F\u6848\u4EF6\u30FB\u78BA\u5EA6\uFF09\u306E\u4E00\u89A7
|
|
482
|
+
twp staffing-board tentative create
|
|
483
|
+
\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u767B\u9332\u3059\u308B\uFF08--user\u30FB--probability\u30FB--hours YYYY-MM=\u6642\u9593\u3002\u7DE8\u96C6\u53EF\uFF09
|
|
484
|
+
twp staffing-board tentative update <ID>
|
|
485
|
+
\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u5909\u66F4\u3059\u308B\uFF08--hours \u306F\u6708\u306E\u96C6\u5408\u3092\u7F6E\u304D\u63DB\u3048\u308B\u3002\u7DE8\u96C6\u53EF\uFF09
|
|
486
|
+
twp staffing-board tentative delete <ID>
|
|
487
|
+
\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u3002\u7DE8\u96C6\u53EF\uFF09
|
|
488
|
+
twp staffing-board tentative promote <ID>
|
|
489
|
+
\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u6B63\u5F0F\u30A2\u30B5\u30A4\u30F3\u3078\u6607\u683C\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u3002\u7DE8\u96C6\u53EF\uFF0B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u8005\uFF09
|
|
490
|
+
twp staffing-board note list
|
|
491
|
+
\u30E1\u30E2\uFF08\u30E1\u30F3\u30D0\u30FC\xD7\u6708\u30FB\u30E1\u30F3\u30D0\u30FC\u30FB\u4F1A\u8B70\u65E5\uFF09\u306E\u4E00\u89A7
|
|
492
|
+
twp staffing-board note set
|
|
493
|
+
\u30E1\u30E2\u3092\u4F5C\u6210\u30FB\u4E0A\u66F8\u304D\u3059\u308B\uFF08--scope\u30FB--content\u3002\u7DE8\u96C6\u53EF\uFF09
|
|
494
|
+
twp staffing-board note delete <ID>
|
|
495
|
+
\u30E1\u30E2\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u3002\u7DE8\u96C6\u53EF\uFF09
|
|
496
|
+
twp staffing-board snapshot list
|
|
497
|
+
\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u306E\u4E00\u89A7\uFF08\u65B0\u3057\u3044\u9806\uFF09
|
|
498
|
+
twp staffing-board snapshot get <ID>
|
|
499
|
+
\u4FDD\u5B58\u6642\u70B9\u306E\u8868\u3068\u7A7A\u304D\uFF0F\u8D85\u904E\uFF0F\u5951\u7D04\u7D42\u4E86\u4E88\u5B9A\u306E\u62BD\u51FA
|
|
500
|
+
twp staffing-board snapshot diff <ID>
|
|
501
|
+
\u524D\u56DE\uFF08--base\uFF09\u304B\u3089\u306E\u5DEE\u5206
|
|
502
|
+
twp staffing-board snapshot create
|
|
503
|
+
\u3044\u307E\u306E\u30DC\u30FC\u30C9\u3092\u4FDD\u5B58\u3059\u308B\uFF08\u65E2\u5B9A\u306F\u7FCC\u6708\u304B\u30894\u304B\u6708\u3002\u7DE8\u96C6\u53EF\uFF09
|
|
504
|
+
twp staffing-board snapshot delete <ID>
|
|
505
|
+
\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u3002\u7DE8\u96C6\u53EF\uFF09
|
|
466
506
|
twp budget dashboard \u5E74\u5EA6\u306E\u4E88\u5B9F\uFF08\u5168\u793E\u3068\u90E8\u7F72\u3054\u3068\u306E\u76EE\u6A19\u30FB\u898B\u8FBC\u30FB\u5B9F\u7E3E\u30FB\u5DEE\u7570\u30FB--year\uFF09
|
|
467
507
|
twp budget summary \u58F2\u4E0A\u30FB\u5229\u76CA\u306E\u76EE\u6A19\u3068\u5B9F\u7E3E\u306E\u5408\u8A08\uFF08--department \u3067\u90E8\u7F72\u3068\u914D\u4E0B\uFF09
|
|
468
508
|
twp budget breakdown \u90E8\u7F72\u884C\u306E\u5185\u8A33\uFF08\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30FB\u62C5\u5F53\u8005\u30FB\u78BA\u5EA6\u30FB\u6848\u4EF6\u3054\u3068\u3002\u7701\u304F\u3068\u672A\u5272\u5F53\uFF09
|
|
@@ -1351,16 +1391,16 @@ TUI \u5185:
|
|
|
1351
1391
|
TWP API \u3092\u547C\u3079\u307E\u3059\u3002TWP API \u306E\u30C4\u30FC\u30EB\u306F\u65E2\u5B9A\u3067\u78BA\u8A8D\u304C\u51FA\u307E\u3059\uFF08-p \u3067\u306F\u62D2\u5426\u3002--allowed-tools \u3067\u540D\u524D\u3092\u8A31\u53EF\uFF09\u3002
|
|
1352
1392
|
\u4F1A\u8A71\u30FB\u30ED\u30FC\u30AB\u30EB\u30C4\u30FC\u30EB\uFF08\u30D5\u30A1\u30A4\u30EB\u30FB\u30B3\u30DE\u30F3\u30C9\u30FBgit\uFF09\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30AF\u30EC\u30B8\u30C3\u30C8\u3067\u5B9F\u969B\u306B\u52D5\u304D\u307E\u3059\u3002
|
|
1353
1393
|
`;function ignoreEpipe(stream){stream.on("error",err=>{if(err.code==="EPIPE")process.exit(0);throw err})}async function main(){const nodeMajor=Number(process.versions.node.split(".")[0]);if(nodeMajor<22){process.stderr.write(`twp-cli \u306B\u306F Node.js 22 \u4EE5\u4E0A\u304C\u5FC5\u8981\u3067\u3059\uFF08\u73FE\u5728: ${process.versions.node}\uFF09
|
|
1354
|
-
`);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-
|
|
1355
|
-
const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-
|
|
1394
|
+
`);process.exit(1)}ignoreEpipe(process.stdout);ignoreEpipe(process.stderr);if(process.env["TWP_AUTO_UPDATE_WORKER"]==="1"){const{runAutoUpdateWorker}=await import("./auto-update-worker-6K24JYLQ.js");await runAutoUpdateWorker().catch(()=>void 0);return}const[first,...rest]=process.argv.slice(2);if(first==="__complete"||first==="completion"){const completion=await import("./completion-C6ZQCDT2.js");if(first==="completion"){process.exitCode=completion.runCompletion(rest,process.stdout,process.stderr);return}
|
|
1395
|
+
const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-TFHSCQK3.js"),import("./config-XYWRBIC6.js")]);process.exitCode=await completion.runComplete(rest,process.stdout,{loadDomain,profileNames:()=>Object.keys(loadUserConfig().profiles??{})});return}if(first==="configure"){const autoUpdate2=await import("./auto-update-FXXQHBV5.js");autoUpdate2.registerRunning();autoUpdate2.onStartup(VERSION);const{runConfigure}=await import("./configure-3JID6MQ5.js");process.exitCode=
|
|
1356
1396
|
await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
|
|
1357
|
-
`);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
|
|
1397
|
+
`);return}if(args.command==="help"){process.stdout.write(HELP);return}if(args.movedCommand!==void 0){const{MOVED_QUEUE_COMMAND_MESSAGE}=await import("./dispatch-HHWTJ3P4.js");process.stderr.write(MOVED_QUEUE_COMMAND_MESSAGE);process.exitCode=2;return}if(args.unknown.length>0){process.stderr.write(`\u4E0D\u660E\u306A\u5F15\u6570: ${args.unknown.join(" ")}
|
|
1358
1398
|
|
|
1359
|
-
${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-
|
|
1360
|
-
{},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-
|
|
1361
|
-
profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-
|
|
1362
|
-
const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-
|
|
1399
|
+
${HELP}`);process.exitCode=2;return}const autoUpdate=await import("./auto-update-FXXQHBV5.js");autoUpdate.registerRunning();if(args.command==="task-loop"&&args.taskLoopAction!=="capacity"){process.env[autoUpdate.DISABLE_ENV]="1"}else if(args.command!=="update"){autoUpdate.onStartup(VERSION)}if(args.command==="domain"&&args.domain!==void 0){const{runDomain}=await import("./run-EO7J3QYK.js");process.exitCode=await runDomain({domain:args.domain,...args.operation!==void 0?{operation:args.operation}:
|
|
1400
|
+
{},argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes,refresh:args.refresh},version:VERSION});return}if(args.command==="api"){const{runApiCommand}=await import("./api-command-Y6J7EAOT.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
|
|
1401
|
+
profile}:{},...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{},dryRun:args.dryRun,debug:args.debug,yes:args.yes},version:VERSION});return}if(args.command==="update"){const{runUpdate}=await import("./update-7GYGZEK3.js");process.exitCode=await runUpdate({...args.profile!==void 0?{profile:args.profile}:{},version:VERSION});return}if(args.command==="login"||args.command==="logout"||args.command==="whoami"){const{runLogin,runLogout,runWhoami}=await import("./commands-ZIRZVBH6.js");
|
|
1402
|
+
const options={profile:args.profile,method:args.loginMethod,tenant:args.tenant,noBrowser:args.loginNoBrowser,cliVersion:VERSION,force:args.logoutForce,...args.output!==void 0?{output:args.output}:{},...args.query!==void 0?{query:args.query}:{}};const runner=args.command==="login"?runLogin:args.command==="logout"?runLogout:runWhoami;process.exitCode=await runner(options);return}if(args.command==="task-loop"){const{runTaskLoop}=await import("./commands-UDG7E3X3.js");process.exitCode=await runTaskLoop(
|
|
1363
1403
|
{action:args.taskLoopAction??"run",project:args.project,profile:args.profile,safe:args.safe,daemon:args.daemon,interval:args.interval,maxCycles:args.maxCycles,forceRunner:args.forceRunner,force:args.stopForce,drain:args.stopDrain,engine:args.engine,version:VERSION,verbose:args.verbose,scheduleNow:args.scheduleNow,scheduleCounts:args.scheduleCounts,scheduleGate:args.scheduleGate,scheduleOp:args.scheduleOp,scheduleConfigOp:args.scheduleConfigOp,scheduleId:args.scheduleId,charterOp:args.charterOp,charterInput:args.
|
|
1364
|
-
charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,settingsOp:args.settingsOp,skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,skillConfig:args.skillConfig,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,planEmpty:args.planEmpty,planCheck:args.planCheck,yes:args.yes,ais:args.ais,workspace:args.
|
|
1365
|
-
noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-
|
|
1366
|
-
await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
|
|
1404
|
+
charterFile,charterOutput:args.charterOut,charterRevision:args.charterRevision,settingsOp:args.settingsOp,skillOp:args.skillOp,skillName:args.skillName,skillAll:args.skillAll,skillDir:args.skillDir,skillConfig:args.skillConfig,output:args.output,query:args.query,revisionFrom:args.revisionFrom,revisionTo:args.revisionTo,planOp:args.planOp,capacityOp:args.capacityOp,runnerOp:args.runnerOp,runnerId:args.runnerTargetId,planEmpty:args.planEmpty,planCheck:args.planCheck,yes:args.yes,ais:args.ais,workspace:args.
|
|
1405
|
+
workspace,aiConfigFile:args.aiConfigFile,noAiConfigFile:args.noAiConfigFile});return}if(args.command==="print"){const{runOneShot}=await import("./oneshot-EAXT2LLB.js");process.exitCode=await runOneShot({prompt:args.prompt??"",fromStdin:args.promptFromStdin,mode:args.mode??"dev",...args.permissionMode!==void 0?{permissionMode:args.permissionMode}:{},allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,...args.model!==void 0?{model:args.model}:{},...args.profile!==void 0?{profile:args.
|
|
1406
|
+
profile}:{},version:VERSION});return}const{startTui}=await import("./app-YVRIMXZY.js");await startTui({mode:args.mode,permissionMode:args.permissionMode,allowedTools:args.allowedTools,disallowedTools:args.disallowedTools,model:args.model,profile:args.profile,noTui:args.noTui||!process.stdout.isTTY,doctor:args.doctor,version:VERSION})}await main();
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import{buildLoopConfig,evaluateOwnership,exportStateDirEnv,localConfigPath,loopStateDir}from"./chunk-
|
|
3
|
+
import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-IIK77LSC.js";import{NO_PLAN_SESSION,RECENT_ADVANCE_WINDOW_HOURS,ReleaseOutcomeLog,buildDynamicBlocks,buildRecentCandidateIndex,createItem,enqueueBlockerRecovery,enqueueDevVerifyForMerged,enqueueReleasePartialMergeRerun,enqueueReleasePhase5Recovery,fileSkillNames,findRecentCandidate,formatInflightEntry,formatPlanResultLine,formatRecentAdvance,inflightEntries,inflightStaleHours,openPlanSession,parseOutcomeCode,
|
|
4
|
+
parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-YV65V2F6.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-ZOOEH7ZE.js";import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-QGRBZ2C2.js";import{claudeConfigDir,resolveDetectDeps}from"./chunk-5SONMN6K.js";
|
|
5
|
+
import{InstanceLock,buildLockOwner,defaultIsLoopProcess,writeLockOwner}from"./chunk-3WHC4FSG.js";import{LoopSettingsApplier,renderStepBudget}from"./chunk-5YJAT7HE.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{duplicateTaskKeyDropReason,excludedKeyInArgs,extractPlanJson,parseOpsCount,parsePlanExcludeKeys,placeholderTaskKey,releaseDeployDropReason,stepToItem,zeroTargetDropReasons}from"./chunk-QGJYT4NH.js";import{redactLoopOutput}from"./chunk-JUJSF5ZG.js";
|
|
6
|
+
import{buildLoopConfig,evaluateOwnership,exportStateDirEnv,localConfigPath,loopStateDir}from"./chunk-RCUI6WWU.js";import{describeOperations,evaluatePlanGate,planGateStatePath,recordPlanned}from"./chunk-XMPHGOW4.js";import{CapacityReporter}from"./chunk-VYDPW2YO.js";import{formatHookIds,formatHookWiring,runHook,runPrefetch,runPreflight}from"./chunk-TTST7UDR.js";import{exclusiveInflightEntries,formatExclusiveEntry,normalizeSkillName,spawnSyncResolved}from"./chunk-FABDZBDZ.js";
|
|
7
7
|
import{setSkillPrefix,skillCommand,skillFromPrompt,stripSkillCommand}from"./chunk-6CS5L24D.js";import{killProcessTree}from"./chunk-N2UVRM3Z.js";import{AgentLoopApi,describeError,filterByStatus,isPermanent,pick,pickString}from"./chunk-O52RKZCC.js";import"./chunk-LDBYJPRD.js";import{PRIVATE_PROJECT_REF,isPrivateProjectId,isPrivateProjectRef,privateProjectId,projectFileKey}from"./chunk-RMFLTSOV.js";import{ULID_RE,loopProjectIdPolicy,resolveProjectRef}from"./chunk-HVZUXLQ4.js";
|
|
8
|
-
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-
|
|
8
|
+
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{stripTerminalControls}from"./chunk-NHYMHCAT.js";
|
|
9
9
|
import"./chunk-VSJBJXZO.js";import fs9 from"fs";import path7 from"path";import fs from"fs";import path from"path";var LoopLogger=class{constructor(runnerId,logFile,out=process.stdout,now=()=>new Date){this.runnerId=runnerId;this.out=out;this.now=now;if(logFile){fs.mkdirSync(path.dirname(logFile),{recursive:true});this.stream=fs.createWriteStream(logFile,{flags:"a"})}}runnerId;out;now;stream=null;log(message){const d=this.now();const ts=`${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;const line=`[${ts}] [${this.runnerId}] ${stripTerminalControls(
|
|
10
10
|
message)}
|
|
11
11
|
`;this.out.write(line);this.stream?.write(line)}separator(){this.log("=".repeat(60))}close(){this.stream?.end();this.stream=null}};function pad(n){return String(n).padStart(2,"0")}function rotateLogs(dir,retentionDays,now=Date.now()){if(retentionDays<=0)return;const cutoff=now-retentionDays*864e5;let entries;try{entries=fs.readdirSync(dir)}catch{return}for(const name of entries){if(!/^(agent-loop|task-loop|step|plan|schedule-enqueued)-.*\.(log|txt)$/.test(name))continue;const file=path.join(dir,
|
|
@@ -290,25 +290,25 @@ const startedAtMs=now();let warned="";let done=false;const check=()=>{if(done)re
|
|
|
290
290
|
decision.key)return;warned=decision.key;handlers.onWarn(decision.reason);return}done=true;const recorded=writeRestartAttempt(opts.stateDir,opts.projectKey,{from:decision.from,to:decision.to,at:new Date(now()).toISOString()},opts.store);if(!recorded){handlers.onWarn(`\u518D\u8D77\u52D5\u8A18\u9332\u3092\u66F8\u3051\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${restartAttemptPath(opts.stateDir,opts.projectKey)}\uFF09\u3002\u540C\u3058\u7248\u30C9\u30EA\u30D5\u30C8\u304C\u89E3\u6D88\u3057\u306A\u3044\u5834\u5408\u3001\u518D\u8D77\u52D5\u3092\u7E70\u308A\u8FD4\u3059\u9632\u6CE2\u5824\u304C\u52B9\u304D\u307E\u305B\u3093`)}
|
|
291
291
|
handlers.onRestart({from:decision.from,to:decision.to})};const timer=setInterval(check,opts.intervalMs??DRIFT_POLL_MS);timer.unref?.();return{stop:()=>{done=true;clearInterval(timer)},check}}import fs8 from"fs";import path6 from"path";var POLL_MS=1e3;var MAX_STOP_BYTES=4096;var MAX_AT_LENGTH=64;function markerPath(lockDir2,kind){return path6.join(lockDir2,kind)}function requestMarker(lockDir2,kind,pid,deps={}){const target=markerPath(lockDir2,kind);const write=deps.writeFileSync??((p,d)=>fs8.writeFileSync(p,d,{flag:"wx",mode:384}));const now=deps.now??(()=>new Date);clearMarker(lockDir2,kind,deps);try{write(target,`${JSON.stringify({pid,at:now().toISOString()})}
|
|
292
292
|
`);return{ok:true}}catch(err){const e=err;return{ok:false,reason:e.code??"UNKNOWN"}}}function readMarker(lockDir2,kind,deps={}){const target=markerPath(lockDir2,kind);const read=deps.readFileSync??(p=>fs8.readFileSync(p,"utf8"));const size=deps.statSize??(p=>fs8.statSync(p).size);let raw;try{if(size(target)>MAX_STOP_BYTES)return null;raw=read(target)}catch{return null}if(raw.length>MAX_STOP_BYTES)return null;try{const parsed=JSON.parse(raw);if(typeof parsed!=="object"||parsed===null)return null;const pid=parsed.pid;const at=parsed.at;if(typeof pid!=="number"||!Number.isInteger(pid)||
|
|
293
|
-
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-
|
|
293
|
+
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-DJ5JT5BE.js");const{DEFAULT_PREFLIGHT_HOSTS}=await import("./ai-dispatch-DJ5JT5BE.js");const extraHosts=config.
|
|
294
294
|
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.
|
|
295
295
|
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.
|
|
296
|
-
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-
|
|
296
|
+
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-ELEIJM6I.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)})}
|
|
297
297
|
const profile=resolveProfile(opts.profile);let creds;try{creds=new AuthSession(profile.name,profile.apiUrl).loadOrThrow()}catch(err){process.stderr.write(`${err.message}
|
|
298
298
|
`);return 1}const apiUrl=effectiveApiUrl(profile,creds.api_url);const session=new AuthSession(profile.name,apiUrl);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");return 2}const projectApi=new ProjectApi(apiUrl,session);let project;try{project=await projectApi.resolve(projectRef)}catch(err){process.stderr.write(`${err.
|
|
299
299
|
message}
|
|
300
|
-
`);return 1}const projectId=project.id;if(opts.action==="setup"){const{runSetup,parseAiList}=await import("./setup-
|
|
300
|
+
`);return 1}const projectId=project.id;if(opts.action==="setup"){const{runSetup,parseAiList}=await import("./setup-FMSAHRGZ.js");let ais;if(opts.ais!==void 0&&opts.ais.length>0){const parsed=parseAiList(opts.ais.join(","));if(parsed.unknown.length>0){process.stderr.write(`--ai \u306B\u672A\u77E5\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${parsed.unknown.join(" / ")}
|
|
301
301
|
`);return 2}ais=parsed.ais}return runSetup({projectId,projectRef,projectName:project.name===project.id?projectRef:`${project.code} / ${project.name}`,apiUrl,yes:opts.yes===true,...ais!==void 0?{ais}:{},...opts.workspace!==void 0?{workspace:opts.workspace}:{},...opts.aiConfigFile!==void 0?{aiConfigFile:opts.aiConfigFile}:{},...opts.noAiConfigFile===true?{noAiConfigFile:true}:{},...opts.profile!==void 0?{profile:opts.profile}:{}})}if(opts.action==="charter"){if(opts.charterOp===void 0){process.stderr.
|
|
302
302
|
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");
|
|
303
303
|
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,
|
|
304
|
-
profile:opts.profile})}if(opts.action==="
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
return
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
write(`\u26A0\uFE0F ${warning}
|
|
304
|
+
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-SRPMAC5S.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})}
|
|
305
|
+
if(opts.action==="schedule"&&opts.scheduleOp!==void 0){const{runScheduleDefCommand}=await import("./schedule-def-command-OFCA5VH3.js");return runScheduleDefCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.scheduleOp,configOp:opts.scheduleConfigOp,id:opts.scheduleId,file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="settings"){if(opts.settingsOp===void 0){process.stderr.write("settings \u306B\u306F pu\
|
|
306
|
+
sh / pull \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30EB\u30FC\u30D7\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");return 2}const{runSettingsCommand}=await import("./settings-command-TEVH2MNY.js");return runSettingsCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.settingsOp,
|
|
307
|
+
file:opts.charterInput,out:opts.charterOutput,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.action==="skill"){if(opts.skillOp===void 0){process.stderr.write("skill \u306B\u306F push / pull / list / show / delete / history / diff / revert / check \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}if(isPrivateProjectId(projectId)){process.stderr.write("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30AD\u30E5\u30FC\uFF08--project __private__\uFF09\u306B\u306F\u30B9\u30AD\u30EB\u5B9A\u7FA9\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093\n");
|
|
308
|
+
return 2}if(opts.skillOp==="check"){const{runSkillCheck}=await import("./skill-check-CKLMW2AJ.js");return runSkillCheck({api:new AgentLoopApi({apiUrl,projectId,session})},{configPath:opts.skillConfig,defaultConfigPath:localConfigPath(projectId),output:opts.output})}if(opts.skillOp==="list"||opts.skillOp==="show"||opts.skillOp==="delete"){const{runSkillManageCommand}=await import("./skill-manage-command-UOWZCF6R.js");return runSkillManageCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.
|
|
309
|
+
skillOp,name:opts.skillName,output:opts.output,query:opts.query,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}if(opts.skillOp!=="push"&&opts.skillOp!=="pull"){const{runRevisionCommand}=await import("./revision-command-KT7NMRES.js");return runRevisionCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{target:"skill",op:opts.skillOp,name:opts.skillName,from:opts.revisionFrom,to:opts.revisionTo,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.
|
|
310
|
+
profile})}const{runSkillCommand}=await import("./skill-command-4VMZ2H6A.js");return runSkillCommand({api:new AgentLoopApi({apiUrl,projectId,session})},{op:opts.skillOp,name:opts.skillName,all:opts.skillAll===true,dir:opts.skillDir,revision:opts.charterRevision,yes:opts.yes===true,projectRef,profile:opts.profile})}const config=buildLoopConfig({projectId,projectRef,apiUrl,safeMode:opts.safe,daemon:opts.daemon,...opts.maxCycles!==void 0?{maxCycles:opts.maxCycles}:{},...opts.interval!==void 0?{intervalSec:opts.
|
|
311
|
+
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 \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\n");return 2}for(const warning of config.warnings)process.stderr.write(`\u26A0\uFE0F ${warning}
|
|
312
312
|
`);const{runCapacityReport}=await import("./capacity-report-command-BUCAQ2P4.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}\
|
|
313
313
|
|
|
314
314
|
`)}if(opts.action==="status")return showStatus(api,config,opts);if(opts.action==="schedule"){const{runScheduleCommand}=await import("./schedule-command-ZOE3NYAA.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}
|
|
@@ -327,11 +327,11 @@ log.log("\u4E2D\u65AD\u30B7\u30B0\u30CA\u30EB\u3092\u53D7\u4FE1\u3057\u307E\u305
|
|
|
327
327
|
"\u6642\u523B\u4E0D\u660E"}\uFF09\u3002\u7D42\u4E86\u3057\u307E\u3059...`);stopWatcher?.();drainWatcher?.();driftWatcher?.();void shutdown().catch(()=>void 0).then(()=>process.exit(130))});drainWatcher=watchMarker(lockDir(config),"drain",process.pid,req=>{drainWatcher?.();if(loop===null){pendingDrain.value={reason:`stop --drain\u30FB${req.at||"\u6642\u523B\u4E0D\u660E"}`,exitCode:0};log.log(`\u30C9\u30EC\u30A4\u30F3\u8981\u6C42\u3092\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F\uFF08${req.at||"\u6642\u523B\u4E0D\u660E"}\
|
|
328
328
|
\uFF09\u3002\u8D77\u52D5\u51E6\u7406\u306E\u5B8C\u4E86\u5F8C\u306B\u53CD\u6620\u3057\u307E\u3059\u3002`);return}loop.requestDrain(`stop --drain\u30FB${req.at||"\u6642\u523B\u4E0D\u660E"}`)});if(installed!==null){const watch=watchVersionDrift({runningVersion:opts.version,stateDir:config.stateDir,projectKey:projectFileKey(config.projectId),supervised:autoRestart.supervised,disabled:autoRestart.disabled},{onWarn:reason=>log.log(`\u26A0\uFE0F ${reason}`),onRestart:({from,to})=>{driftWatcher?.();log.
|
|
329
329
|
log(`\u7248\u30C9\u30EA\u30D5\u30C8\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\uFF08${from} \u2192 ${to}\uFF09\u3002`);log.log(` \u5B9F\u884C\u4E2D\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u5B8C\u8D70\u3055\u305B\u3066\u304B\u3089\u7D42\u4E86\u3057\u307E\u3059\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 ${EXIT_VERSION_DRIFT}\uFF09\u3002\u518D\u8D77\u52D5\u306F systemd\uFF08Restart=always\uFF09\u304C\u884C\u3044\u307E\u3059`);const reason=`\u7248\u30C9\u30EA\u30D5\u30C8 ${from} \u2192 ${to} \u306B\u3088\u308B\u81EA\u52D5\u518D\u8D77\u52D5`;
|
|
330
|
-
if(loop===null)pendingDrain.value={reason,exitCode:EXIT_VERSION_DRIFT};else loop.requestDrain(reason,EXIT_VERSION_DRIFT)}});driftWatcher=watch.stop}try{const{LoopSettingsApplier:LoopSettingsApplier2}=await import("./server-settings-
|
|
330
|
+
if(loop===null)pendingDrain.value={reason,exitCode:EXIT_VERSION_DRIFT};else loop.requestDrain(reason,EXIT_VERSION_DRIFT)}});driftWatcher=watch.stop}try{const{LoopSettingsApplier:LoopSettingsApplier2}=await import("./server-settings-OB7JF757.js");const settings=new LoopSettingsApplier2({api,config,log:m=>log.log(m)});await settings.apply();const{ServerSkillCatalog:ServerSkillCatalog2}=await import("./server-skills-FVYYZ54O.js");const skills=new ServerSkillCatalog2({api,config,log:m=>log.log(m)});await skills.
|
|
331
331
|
refresh();await runner.checkHeartbeatInterval();await runner.registerOrThrow();runner.startHeartbeatWorker();log.log(` heartbeat: ${config.heartbeatIntervalSec}\u79D2\u3054\u3068\u306B\u9001\u4FE1${runner.heartbeatTimeoutServer?`\uFF08\u30B5\u30FC\u30D0\u306E\u6B7B\u6D3B\u3057\u304D\u3044\u5024 ${runner.heartbeatTimeoutServer}\u79D2\uFF09`:""}`);loop=new TaskLoop({api,projectApi,config,log,runner,engine:await buildEngine(config,m=>log.log(m)),settings,skills});if(pendingDrain.value!==null){loop.
|
|
332
|
-
requestDrain(pendingDrain.value.reason,pendingDrain.value.exitCode)}exitCode=await loop.run()}catch(err){if(err instanceof RunnerRegistrationError){exitCode=1}else{log.log(`\u26D4 \u4E88\u671F\u3057\u306A\u3044\u30A8\u30E9\u30FC\u3067\u7D42\u4E86\u3057\u307E\u3059: ${err.message}`);exitCode=1}}finally{await shutdown()}return exitCode}async function showStatus(api,config,opts){const{runStatusCommand}=await import("./status-command-
|
|
333
|
-
{projectRef:config.projectRef,projectId:config.projectId,apiUrl:config.apiUrl,lockPath:lock,lockHeld:fs9.existsSync(lock)},{output:opts.output,query:opts.query},{out:s=>process.stdout.write(s),err:s=>process.stderr.write(s)})}var STOP_WAIT_MS=18e4;var STOP_POLL_MS=250;function defaultIsAlive(pid){try{process.kill(pid,0);return true}catch(err){return err.code==="EPERM"}}async function stopLoop(opts,deps={}){const platform=deps.platform??process.platform;const isLoopProcess=deps.
|
|
334
|
-
const isAlive=deps.isAlive??defaultIsAlive;const waitMs=deps.waitMs??STOP_WAIT_MS;const pollMs=deps.pollMs??STOP_POLL_MS;const now=deps.now??Date.now;const nap=deps.sleep??(ms=>new Promise(r=>setTimeout(r,ms)));const request=deps.requestMarkerFn??requestMarker;const out=m=>void process.stdout.write(m);const err=m=>void process.stderr.write(m);if(opts.force&&opts.drain){err("\u26A0\uFE0F --force \u3068 --drain \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u8981\u6C42\u304C\u6B63\u53CD\u5BFE\u3067\u3059\uFF09\u3002\u3069\u3061\u3089\u3082\u5B9F\u884C\u3057\u307E\u305B\u3093\n");
|
|
332
|
+
requestDrain(pendingDrain.value.reason,pendingDrain.value.exitCode)}exitCode=await loop.run()}catch(err){if(err instanceof RunnerRegistrationError){exitCode=1}else{log.log(`\u26D4 \u4E88\u671F\u3057\u306A\u3044\u30A8\u30E9\u30FC\u3067\u7D42\u4E86\u3057\u307E\u3059: ${err.message}`);exitCode=1}}finally{await shutdown()}return exitCode}async function showStatus(api,config,opts){const{runStatusCommand}=await import("./status-command-C42CVQ3Q.js");const lock=lockDir(config);return runStatusCommand(api,
|
|
333
|
+
{projectRef:config.projectRef,projectId:config.projectId,apiUrl:config.apiUrl,lockPath:lock,lockHeld:fs9.existsSync(lock),profile:opts.profile},{output:opts.output,query:opts.query},{out:s=>process.stdout.write(s),err:s=>process.stderr.write(s)})}var STOP_WAIT_MS=18e4;var STOP_POLL_MS=250;function defaultIsAlive(pid){try{process.kill(pid,0);return true}catch(err){return err.code==="EPERM"}}async function stopLoop(opts,deps={}){const platform=deps.platform??process.platform;const isLoopProcess=deps.
|
|
334
|
+
isLoopProcess??defaultIsLoopProcess;const isAlive=deps.isAlive??defaultIsAlive;const waitMs=deps.waitMs??STOP_WAIT_MS;const pollMs=deps.pollMs??STOP_POLL_MS;const now=deps.now??Date.now;const nap=deps.sleep??(ms=>new Promise(r=>setTimeout(r,ms)));const request=deps.requestMarkerFn??requestMarker;const out=m=>void process.stdout.write(m);const err=m=>void process.stderr.write(m);if(opts.force&&opts.drain){err("\u26A0\uFE0F --force \u3068 --drain \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u8981\u6C42\u304C\u6B63\u53CD\u5BFE\u3067\u3059\uFF09\u3002\u3069\u3061\u3089\u3082\u5B9F\u884C\u3057\u307E\u305B\u3093\n");
|
|
335
335
|
return 2}const stateDir=deps.stateDir??loopStateDir();let dirs;try{dirs=fs9.readdirSync(stateDir).filter(d=>/^task-loop-.*\.lock\.d$/.test(d))}catch{dirs=[]}if(opts.project){if(/^[0-9a-f-]{36}$/i.test(opts.project)||ULID_RE.test(opts.project)){dirs=dirs.filter(d=>d===`task-loop-${opts.project}.lock.d`)}else if(isPrivateProjectRef(opts.project)){dirs=dirs.filter(d=>d.startsWith("task-loop-private-"))}else{err(`\u26A0\uFE0F --project \u306F ID\uFF08UUID / ULID\uFF09\u6307\u5B9A\u306E\u3068\u304D\u3060\u3051\u7D5E\u308A\u8FBC\u3081\u307E\u3059\uFF08${safe(
|
|
336
336
|
opts.project)} \u306F\u30AD\u30FC\u5F62\u5F0F\u306B\u898B\u3048\u307E\u3059\uFF09\u3002\u3053\u306E\u30DE\u30B7\u30F3\u306E task-loop ${dirs.length}\u4EF6\u3059\u3079\u3066\u3092\u5BFE\u8C61\u306B\u3057\u307E\u3059
|
|
337
337
|
`)}}if(dirs.length===0){out("\u3053\u306E\u30DE\u30B7\u30F3\u3067\u7A3C\u50CD\u4E2D\u306E task-loop \u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\n");return 0}const startedAt=now();const targets=[];for(const dir of dirs){const lockDirPath=path7.join(stateDir,dir);let pid;try{pid=Number.parseInt(fs9.readFileSync(path7.join(lockDirPath,"pid"),"utf8").trim(),10)}catch{continue}if(!Number.isInteger(pid)||pid<=0)continue;if(!isLoopProcess(pid)){out(`\u6B8B\u9AB8\u306E\u30ED\u30C3\u30AF\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\uFF08pid=${pid}\
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
3
|
import{PromptAbortedError,promptHidden,promptText}from"./chunk-L37NS5L2.js";import{system32}from"./chunk-N2UVRM3Z.js";import{ApiError,TwpApiClient,errorListMessages}from"./chunk-JA5A6UJ2.js";import{EXIT_USAGE,UsageError}from"./chunk-VFPY2A23.js";import{isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import{AuthSession,NotLoggedInError,SessionExpiredError,deleteCredentials,loadCredentials,maskToken,saveCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";
|
|
4
|
-
import{effectiveApiUrl,resolveProfile}from"./chunk-
|
|
4
|
+
import{effectiveApiUrl,resolveProfile}from"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import os from"os";import{createHash,randomBytes}from"crypto";function generatePkcePair(){const verifier=randomBytes(32).toString("base64url");return{verifier,challenge:computeChallenge(verifier),method:"S256"}}function computeChallenge(verifier){return createHash("sha256").update(verifier,"ascii").digest("base64url")}function generateState(){return randomBytes(16).toString("base64url")}import http from"http";import crypto from"crypto";function safeEqual(a,b){const x=Buffer.from(a,"utf8");const y=Buffer.from(b,"utf8");const len=Math.max(x.length,y.length,1);const px=Buffer.alloc(len);const py=Buffer.alloc(len);x.copy(px);y.copy(py);return crypto.timingSafeEqual(px,py)&&x.length===y.length}var LoginTimeoutError=class extends Error{constructor(timeoutMs){super(`\u30D6\u30E9\u30A6\u30B6\u3067\u306E\u627F\u8A8D\u3092 ${Math.round(timeoutMs/1e3)} \u79D2\u5F85\u3061\u307E\u3057\u305F\u304C\u5B8C\u4E86\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002twp login \u3092\u3084\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\
|
|
5
5
|
\u3044\u3002`)}};var SUCCESS_HTML=`<!doctype html><html lang="ja"><head><meta charset="utf-8"><title>TWP CLI \u30ED\u30B0\u30A4\u30F3\u5B8C\u4E86</title></head>
|
|
6
6
|
<body style="font-family: sans-serif; text-align: center; padding-top: 4rem; background:#f7f9fc; color:#1b2559">
|
|
7
7
|
<h1 style="font-size:1.4rem">\u2705 \u30ED\u30B0\u30A4\u30F3\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F</h1>
|
|
@@ -50,7 +50,7 @@ ${err.hint?`${err.hint}
|
|
|
50
50
|
`);return 1}writeErr(`\u30A8\u30E9\u30FC: ${err.message}
|
|
51
51
|
`);return 1}}async function runLogin(options){return run(async()=>{const profile=resolveProfile(options.profile);const io=makeIo(options.cliVersion);if(options.method==="password"){await passwordLogin(profile,{tenantCode:options.tenant??void 0},process.env,io)}else if(options.method==="token"){await tokenLogin(profile,process.env,io)}else{await browserLogin(profile,process.env,io,{noBrowser:options.noBrowser})}})}async function runLogout(options){return run(async()=>{const profile=resolveProfile(
|
|
52
52
|
options.profile);const creds=loadCredentials(profile.name);if(!creds){writeOut(`\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u300C${profile.name}\u300D\u306F\u30ED\u30B0\u30A4\u30F3\u3057\u3066\u3044\u307E\u305B\u3093\u3002
|
|
53
|
-
`);return}const{describeLogoutImpact,findLoopsUsingProfile}=await import("./logout-guard-
|
|
53
|
+
`);return}const{describeLogoutImpact,findLoopsUsingProfile}=await import("./logout-guard-57LHDX6L.js");const found=findLoopsUsingProfile(profile.name,options.logoutGuard);if(found.users.length>0||found.undetermined.length>0){writeErr(describeLogoutImpact(profile.name,found,options.force===true));if(options.force!==true)throw new LogoutRefusedError}const apiUrl=effectiveApiUrl(profile,creds.api_url);const revoked=await httpFetch(`${apiUrl}/api/v2/auth/logout`,{method:"POST",headers:{Accept:"applic\
|
|
54
54
|
ation/json",Authorization:`Bearer ${creds.token}`}}).then(res=>res.ok,()=>false);await deleteCredentials(profile.name);writeOut(`\u2705 \u30ED\u30B0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F\uFF08\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB: ${profile.name} / \u30C8\u30FC\u30AF\u30F3: ${maskToken(creds.token)}\uFF09
|
|
55
55
|
`);if(!revoked){writeOut("\u26A0 \u30B5\u30FC\u30D0\u5074\u306E\u30C8\u30FC\u30AF\u30F3\u5931\u52B9\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u7B49\uFF09\u3002TWP \u306E\u300C\u8A2D\u5B9A > CLI\u7AEF\u672B\u300D\u304B\u3089\u3082\u5931\u52B9\u3067\u304D\u307E\u3059\u3002\n")}})}async function runWhoami(options){return run(async()=>{const profile=resolveProfile(options.profile);const structured=options.output!==void 0||options.query!==void 0;let format=null;if(structured){
|
|
56
56
|
const{resolveOutputFormat,OUTPUT_FORMATS}=await import("./format-F6PPBPY5.js");format=resolveOutputFormat({...options.output!==void 0?{flag:options.output}:{},isTty:process.stdout.isTTY===true});if(format===null){throw new UsageError(`--output \u306B\u300C${options.output??""}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F ${OUTPUT_FORMATS.join(" / ")} \u3067\u3059`)}}const stored=loadCredentials(profile.name);const apiUrl=effectiveApiUrl(
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{customerDocumentSubresources}from"./chunk-
|
|
4
|
-
import"./chunk-JJSBBWJ5.js";import{
|
|
5
|
-
import"./chunk-
|
|
3
|
+
import{customerDocumentSubresources}from"./chunk-NTT2QG3J.js";import{COMPANY_FIELDS,COMPANY_LICENSE,CUSTOMER_LICENSE,customerSubresources,customerWriteOperations,dataOf,levelForbidden}from"./chunk-CZVQS3WP.js";import"./chunk-WTYIFLVB.js";import"./chunk-V64CGX7V.js";import"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-4RNL462J.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-CADCERVL.js";
|
|
4
|
+
import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-RSSPNFSK.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{LIST_FLAGS,LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,envelopePaging,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes,positiveInteger}from"./chunk-MI6HVYR2.js";
|
|
5
|
+
import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CUSTOMER_FLAG_FIELD={kind:"boolean",flag:"--customer",key:"customer_flg",summary:"\u9867\u5BA2\u3068\u3057\u3066\u6271\u3046\u304B\uFF08true / false\uFF09"};var FIELDS=[...COMPANY_FIELDS,CUSTOMER_FLAG_FIELD];var COLUMNS=["id","company_name","company_name_kana","company_short_name","customer_flg","supplier_flg","tel","address1"];var WRITE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u53D6\u5F15\u5148\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u306B\u306F\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u304B\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u306E\u3069\u3061\u3089\u304B\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
|
|
6
6
|
var DELETE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u53D6\u5F15\u5148\u306E\u524A\u9664\u306B\u306F\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u304B\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u306E\u3069\u3061\u3089\u304B\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");var REF_HELP="<\u53D6\u5F15\u5148> \u306F\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u5B8C\u5168\u4E00\u81F4\u304B\
|
|
7
7
|
ID\uFF08twp company list \u306E id \u5217\u306E\u6570\u5B57\uFF09\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\u9867\u5BA2\u30FB\u4ED5\u5165\u5148\u306E\u3069\u3061\u3089\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002";function companyPath(input){const id=requireResolved(input,"companyId");if(!isExactNumericId(id))throw new UsageError(`\u53D6\u5F15\u5148 ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${id}`);return`${SALES_COMPANIES_PATH}/${id}`}async function resolveCompany(input,ctx,usage){
|
|
8
8
|
const raw=singleRef(input,{flag:"<\u53D6\u5F15\u5148>",label:"\u53D6\u5F15\u5148",usage});return withResolved(input,{companyId:(await ctx.resolver.company(raw,{flag:"<\u53D6\u5F15\u5148>",source:"sales",mustExist:true})).id})}var createOperation={name:"create",summary:"\u53D6\u5F15\u5148\u4F01\u696D\u3092\u767B\u9332\u3059\u308B\uFF08\u9867\u5BA2\u30FB\u4ED5\u5165\u5148\u306E\u3069\u3061\u3089\u304B\u4E00\u65B9\u4EE5\u4E0A\uFF09",usage:"twp company create --name <\u4F01\u696D\u540D> (--customer true | --suppli\
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{
|
|
3
|
+
import{GLOBAL_FLAGS}from"./chunk-IVFSEXD3.js";import"./chunk-2LOT54OO.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-MLRBDF44.js";import{BUILTIN_COMMANDS,QUEUE_DOMAIN,TASK_LOOP_ACTIONS,TASK_LOOP_QUEUE_ACTIONS,VALUE_FLAGS,rewriteQueueCommand}from"./chunk-VERYHAWV.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
|
|
4
4
|
function positionals(words,takesValue){const out=[];for(let i=0;i<words.length;i++){const word=words[i]??"";if(word==="--"){out.push(...words.slice(i+1));break}if(word.startsWith("-")){if(!word.includes("=")&&takesValue(word))i++;continue}out.push(word)}return out}function byPrefix(candidates,current){const seen=new Set;for(const candidate of candidates){if(candidate.startsWith(current))seen.add(candidate)}return[...seen]}function remainingFlags(flags,words){const used=new Set(words.filter(w=>w.
|
|
5
|
-
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(
|
|
6
|
-
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
|
|
7
|
-
|
|
8
|
-
if(pos.length===2&&second==="settings"&&!current.startsWith("-"))return byPrefix(["push","pull"],current);if(pos.length===2&&second==="plan"&&!current.startsWith("-"))return byPrefix(["submit"],current);if(pos.length===2&&second==="capacity"&&!current.startsWith("-"))return byPrefix(["report"],current);
|
|
9
|
-
current)
|
|
10
|
-
second)}if(operation===void 0)return[];if(!current.startsWith("-"))return[];return byPrefix(remainingFlags(operation.flags,words),current)}function completionScript(shell){switch(shell){case"bash":
|
|
5
|
+
startsWith("--")).map(w=>w.split("=")[0]));return[...flags.filter(f=>f.repeatable===true||!used.has(f.name)).map(f=>f.name),...DOMAIN_GLOBAL_FLAGS.filter(f=>!used.has(f))]}async function complete(rawWords,current,ctx){const queue=rewriteQueueCommand(rawWords);if(queue.moved!==void 0)return[];const words=queue.argv;const previous=words[words.length-1];if(previous!==void 0&&previous.startsWith("--")&&!previous.includes("=")){const values=staticValues(previous,ctx);if(values!==void 0)return byPrefix(
|
|
6
|
+
values,current)}const eq=current.indexOf("=");if(current.startsWith("--")&&eq>0){const flag=current.slice(0,eq);const values=staticValues(flag,ctx);return values===void 0?[]:byPrefix(values.map(v=>`${flag}=${v}`),current)}const pos=positionals(words,flag=>VALUE_FLAGS.has(flag));const[first,second]=pos;if(first===void 0){if(current.startsWith("-"))return byPrefix([...TOP_LEVEL_FLAGS,...DOMAIN_GLOBAL_FLAGS],current);return byPrefix([...BUILTIN_COMMANDS,...DOMAIN_NAMES.filter(name=>name!==QUEUE_DOMAIN),
|
|
7
|
+
...EXTRA_TOP_LEVEL],current)}if(first==="completion")return pos.length===1?byPrefix(COMPLETION_SHELLS,current):[];if(first==="configure")return current.startsWith("-")?byPrefix(["--profile"],current):[];if(first===HELP_TOKEN)return pos.length===1?byPrefix([...DOMAIN_NAMES.filter(name=>name!==QUEUE_DOMAIN),API_TOKEN],current):[];if(first==="task-loop"){if(pos.length===1&&!current.startsWith("-"))return byPrefix([...TASK_LOOP_ACTIONS,...TASK_LOOP_QUEUE_ACTIONS],current);if(pos.length===2&&(second===
|
|
8
|
+
"charter"||second==="skill")&&!current.startsWith("-")){const ops=["push","pull","history","diff","revert"];return byPrefix(second==="skill"?[...ops,"list","show","delete","check"]:ops,current)}if(pos.length===2&&second==="settings"&&!current.startsWith("-"))return byPrefix(["push","pull"],current);if(pos.length===2&&second==="plan"&&!current.startsWith("-"))return byPrefix(["submit"],current);if(pos.length===2&&second==="capacity"&&!current.startsWith("-"))return byPrefix(["report"],current);if(pos.
|
|
9
|
+
length===2&&second==="runner"&&!current.startsWith("-"))return byPrefix(["list","remove"],current);return[]}if(!isDomainName(first))return[];const domain=await ctx.loadDomain(first);const subresources=domain.subresources??[];if(second===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...domain.operations.map(op=>op.name),...subresources.map(sub2=>sub2.name),HELP_TOKEN],current)}const sub=subresources.find(resource=>resource.name===second);let operation;
|
|
10
|
+
if(sub!==void 0){const third=pos[2];if(third===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...sub.operations.map(op=>op.name),HELP_TOKEN],current)}operation=sub.operations.find(op=>op.name===third)}else{operation=domain.operations.find(op=>op.name===second)}if(operation===void 0)return[];if(!current.startsWith("-"))return[];return byPrefix(remainingFlags(operation.flags,words),current)}function completionScript(shell){switch(shell){case"bash":
|
|
11
|
+
return`# twp \u306E bash \u88DC\u5B8C\uFF08twp completion bash \u304C\u51FA\u529B\uFF09
|
|
11
12
|
# \u8AAD\u307F\u8FBC\u307F: eval "$(twp completion bash)" \uFF0F \u5E38\u7528: ~/.bashrc \u306B\u540C\u30581\u884C\u3092\u66F8\u304F
|
|
12
13
|
# \uFF08source <(...) \u306F macOS \u6A19\u6E96\u306E bash 3.2 \u3067\u8AAD\u307F\u8FBC\u307E\u308C\u306A\u3044\u306E\u3067\u4F7F\u308F\u306A\u3044\uFF09
|
|
13
14
|
# \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
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{DEFAULT_API_URL,DEFAULT_FRONTEND_URL,DEFAULT_RELAY_URL,effectiveApiUrl,effectiveRelayUrl,loadProjectConfig,loadUserConfig,resolveConfiguredBacklogSpace,resolveConfiguredModel,resolveConfiguredOutput,resolveProfile,resolveProfileName,userConfigPath}from"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";export{DEFAULT_API_URL,DEFAULT_FRONTEND_URL,DEFAULT_RELAY_URL,effectiveApiUrl,effectiveRelayUrl,loadProjectConfig,loadUserConfig,resolveConfiguredBacklogSpace,resolveConfiguredModel,resolveConfiguredOutput,resolveProfile,resolveProfileName,userConfigPath};
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{PromptAbortedError,promptText}from"./chunk-L37NS5L2.js";import{writePrivateFileAtomic}from"./chunk-D233KKXW.js";import{loadUserConfig,resolveProfileName,userConfigPath}from"./chunk-
|
|
3
|
+
import{PromptAbortedError,promptText}from"./chunk-L37NS5L2.js";import{writePrivateFileAtomic}from"./chunk-D233KKXW.js";import{loadUserConfig,resolveProfileName,userConfigPath}from"./chunk-EDF4U5BT.js";import{ensureTwpHome}from"./chunk-RZVI6PMW.js";import{splitFlagToken}from"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,isOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CLEAR="-";var HELP=`\u4F7F\u3044\u65B9: twp configure [--profile <\u540D\u524D>]
|
|
4
4
|
|
|
5
5
|
\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306E\u65E2\u5B9A\u3092\u5BFE\u8A71\u3067\u8A2D\u5B9A\u3057\u3001~/.twp/config.json \u306B\u4FDD\u5B58\u3057\u307E\u3059
|
|
6
6
|
\uFF08\u8A8D\u8A3C\u60C5\u5831\u306B\u306F\u89E6\u308A\u307E\u305B\u3093\u3002\u30ED\u30B0\u30A4\u30F3\u306F twp login\uFF09\u3002
|
|
7
7
|
|
|
8
8
|
\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 --project \u3092\u7701\u7565\u3057\u305F\u3068\u304D\u306B\u4F7F\u3046\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u304B ID\uFF09
|
|
9
9
|
\u65E2\u5B9A\u306E\u51FA\u529B\u5F62\u5F0F ${OUTPUT_FORMATS.join(" | ")}\uFF08--output \u3092\u7701\u7565\u3057\u305F\u3068\u304D\u306B\u4F7F\u3046\uFF09
|
|
10
|
+
\u65E2\u5B9A\u306E Backlog \u30B9\u30DA\u30FC\u30B9 twp backlog \u3067 --space \u3092\u7701\u7565\u3057\u305F\u3068\u304D\u306B\u4F7F\u3046\u30B9\u30DA\u30FC\u30B9
|
|
11
|
+
\uFF08ID / \u30B9\u30DA\u30FC\u30B9URL / \u30B5\u30D6\u30C9\u30E1\u30A4\u30F3\u3002twp backlog space list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09
|
|
10
12
|
\u65E2\u5B9A\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB --profile \u3092\u7701\u7565\u3057\u305F\u3068\u304D\u306B\u4F7F\u3046\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB
|
|
11
13
|
|
|
12
14
|
Enter \u3067\u73FE\u5728\u306E\u5024\u306E\u307E\u307E\u3001\u300C${CLEAR}\u300D\u3067\u8A2D\u5B9A\u3092\u6D88\u3057\u307E\u3059\u3002
|
|
@@ -22,10 +24,12 @@ ${HELP}`);return 2}let config;try{config=loadUserConfig(full.env)}catch(err){ful
|
|
|
22
24
|
`);return 1}const profileName=args.profile??resolveProfileName(void 0,full.env,full.cwd);const profile={...config.profiles?.[profileName]??{}};full.out.write(`\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u300C${profileName}\u300D\u3092\u8A2D\u5B9A\u3057\u307E\u3059\uFF08Enter \u3067\u636E\u3048\u7F6E\u304D\u30FB\u300C${CLEAR}\u300D\u3067\u6D88\u53BB\uFF09
|
|
23
25
|
`);try{const project=answerToValue(await full.ask(`\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 [${shown(profile.project)}]: `),profile.project);const outputAnswer=await full.ask(`\u65E2\u5B9A\u306E\u51FA\u529B\u5F62\u5F0F\uFF08${OUTPUT_FORMATS.join(" / ")}\uFF09 [${shown(profile.output)}]: `);const output=answerToValue(outputAnswer,profile.output);if(output!==void 0&&output!==profile.output&&!isOutputFormat(output)){full.err.write(`\u51FA\u529B\u5F62\u5F0F\u306F ${OUTPUT_FORMATS.join(
|
|
24
26
|
" / ")} \u306E\u3044\u305A\u308C\u304B\u3067\u3059\uFF08\u6307\u5B9A: ${output}\uFF09\u3002\u4F55\u3082\u4FDD\u5B58\u3057\u3066\u3044\u307E\u305B\u3093\u3002
|
|
25
|
-
`);return 2}const currentDefault=config.default_profile??"default";let makeDefault=false;if(currentDefault!==profileName){const answer=await full.ask(`\u300C${profileName}\u300D\u3092\u65E2\u5B9A\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u3057\u307E\u3059\u304B\uFF08\u73FE\u5728: ${currentDefault}\uFF09 [y/N]: `);makeDefault=/^y(es)?$/i.test(answer)}
|
|
26
|
-
...config,profiles:{...config.profiles??{},[profileName]:profile},...makeDefault?{default_profile:profileName}:{}};
|
|
27
|
+
`);return 2}const currentDefault=config.default_profile??"default";let makeDefault=false;if(currentDefault!==profileName){const answer=await full.ask(`\u300C${profileName}\u300D\u3092\u65E2\u5B9A\u306E\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u3057\u307E\u3059\u304B\uFF08\u73FE\u5728: ${currentDefault}\uFF09 [y/N]: `);makeDefault=/^y(es)?$/i.test(answer)}let backlogSpaceAnswer="";try{backlogSpaceAnswer=await full.ask(`\u65E2\u5B9A\u306E Backlog \u30B9\u30DA\u30FC\u30B9 [${shown(profile.backlog_space)}\
|
|
28
|
+
]: `)}catch(err){if(!(err instanceof PromptAbortedError))throw err}const backlogSpace=answerToValue(backlogSpaceAnswer,profile.backlog_space);if(project===void 0)delete profile.project;else profile.project=project;if(output===void 0)delete profile.output;else profile.output=output;if(backlogSpace===void 0)delete profile.backlog_space;else profile.backlog_space=backlogSpace;const next={...config,profiles:{...config.profiles??{},[profileName]:profile},...makeDefault?{default_profile:profileName}:{}};
|
|
29
|
+
const file=full.write(next);full.out.write(`\u4FDD\u5B58\u3057\u307E\u3057\u305F: ${file}
|
|
27
30
|
\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB ${profileName}${makeDefault||currentDefault===profileName?"\uFF08\u65E2\u5B9A\uFF09":""}
|
|
28
31
|
\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ${shown(profile.project)}
|
|
29
32
|
\u65E2\u5B9A\u306E\u51FA\u529B\u5F62\u5F0F ${shown(profile.output)}
|
|
33
|
+
\u65E2\u5B9A\u306E Backlog \u30B9\u30DA\u30FC\u30B9 ${shown(profile.backlog_space)}
|
|
30
34
|
`);if(full.env.TWP_PROJECT!==void 0&&full.env.TWP_PROJECT.trim()!==""&&profile.project!==void 0){full.err.write(`\u6CE8\u8A18: TWP_PROJECT\uFF08${full.env.TWP_PROJECT}\uFF09\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u3053\u306E\u7AEF\u672B\u3067\u306F\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3088\u308A\u305D\u3061\u3089\u304C\u512A\u5148\u3055\u308C\u307E\u3059\u3002
|
|
31
35
|
`)}return 0}catch(err){if(err instanceof PromptAbortedError){full.err.write("\u5165\u529B\u304C\u4E2D\u65AD\u3055\u308C\u307E\u3057\u305F\u3002\u4F55\u3082\u4FDD\u5B58\u3057\u3066\u3044\u307E\u305B\u3093\u3002\n");return 1}throw err}}export{runConfigure};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{contractAiReviewResources}from"./chunk-
|
|
4
|
-
import{
|
|
3
|
+
import{contractAiReviewResources}from"./chunk-DELIIGWE.js";import"./chunk-V3RZ4RFP.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-4RNL462J.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{isoDate}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{SALES_CONTRACTS_PATH,isExactNumericId,resolveNamed}from"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
|
|
4
|
+
import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";
|
|
5
5
|
import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var PATH=SALES_CONTRACTS_PATH;var SALES_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));var DISAMBIGUATION="\u53D6\u5F15\u5951\u7D04\u306F\u898B\u7A4D\u304B\u3089\u4F5C\u308B\u8CA9\u58F2\u7BA1\u7406\u306E\u66F8\u985E\u3067\u3059\uFF08\u660E\u7D30\u30FB\u91D1\u984D\u3092\u6301\u3061\u3001\u627F\u8A8D\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306B\u4E57\u308A\u307E\u3059\uFF09\u3002\n\u9867\u5BA2\u306B\u7D10\u3065\u3051\u3066\u4FDD\u7BA1\u3059\u308B\u5951\u7D04\u66F8\u306E PDF \u306F\u5225\u7269\u3067\u3001twp customer contract \u3067\u6271\u3044\u307E\u3059\u3002\n\n";
|
|
6
6
|
var CONTRACT_STATUSES={new:"\u4F5C\u6210\u4E2D",create_completed:"\u4F5C\u6210\u5B8C\u4E86",in_progress:"\u7533\u8ACB\u4E2D",approved:"\u627F\u8A8D\u6E08",rejected:"\u5DEE\u3057\u623B\u3057",submitted:"\u63D0\u793A\u6E08",contracted:"\u5951\u7D04\u7DE0\u7D50\u6E08",deleted:"\u524A\u9664\u6E08"};var RENEWAL_TYPES={auto_renewal:"\u81EA\u52D5\u66F4\u65B0",application_renewal:"\u7533\u8FBC\u306B\u3088\u308B\u66F4\u65B0"};function statusName(code){return CONTRACT_STATUSES[code]??code}function tableHelp(table){
|
|
7
7
|
return Object.entries(table).map(([code,name])=>`${code}\uFF08${name}\uFF09`).join(" / ")}var STORE_KEYS=["estimate_id","contract_no","title","status","contract_date","start_date","end_date","renewal_type","cancellation_notice_days","next_renewal_date","memo","manage_form_data","contract_document_file_ids","details","recipients"];var CREATE_ONLY_KEYS=["estimate_id"];var UPDATE_KEYS=STORE_KEYS.filter(key=>!CREATE_ONLY_KEYS.includes(key));var DETAIL_KEYS=["item_name","description","quantity","unit",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{cacheNote,createFlags,fieldBody,hasAnyField,idSegment,masterFields,masterItem,masterListOperation,masterRows,referencedDeleteGuidance,resolveRefFields,targetId,updateFlags}from"./chunk-
|
|
4
|
-
import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-
|
|
3
|
+
import{cacheNote,createFlags,fieldBody,hasAnyField,idSegment,masterFields,masterItem,masterListOperation,masterRows,referencedDeleteGuidance,resolveRefFields,targetId,updateFlags}from"./chunk-CADCERVL.js";import"./chunk-JJSBBWJ5.js";import{DEPARTMENTS_PATH}from"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{withResolved}from"./chunk-PS5QFKHB.js";
|
|
4
|
+
import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u90E8\u7F72";var LIST_COLUMNS=["id","code","name","parent_id","level","effective_status","valid_from","valid_to","member_count"];var GET_COLUMNS=["id","code","name","name_short","parent_id","level","sort","effective_status","valid_from","valid_to","description"];var TREE_COLUMNS=["depth","name","code","id","effective_status","valid_to"];var MEMBER_COLUMNS=["id","user_id","position_id","job_title_id","start_date","end_date","is_primary","is_current","effective_status"];var REF_FLAG={name:"\
|
|
5
5
|
--department",summary:"\u5BFE\u8C61\u306E\u90E8\u7F72\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",takesValue:true,placeholder:"<\u90E8\u7F72>"};var REF_HELP="<\u90E8\u7F72> \u306F\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID \u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u540D\u524D\u304C\u8907\u6570\u306B\u4E00\u81F4\u3059\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002\nID \u4EE5\u5916\u306F\u90E8\u7F72\u4E00\u89A7\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002";
|
|
6
6
|
var FIELDS=masterFields(LABEL,[{kind:"text",flag:"--name-short",key:"name_short",label:"\u7565\u79F0",maxChars:50,summary:"\u7565\u79F0"},{kind:"ref",flag:"--parent",key:"parent_id",summary:"\u89AA\u90E8\u7F72\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\uFF09",placeholder:"<\u90E8\u7F72>",clearFlag:"--no-parent",clearSummary:"\u89AA\u90E8\u7F72\u3092\u5916\u3057\u3066\u6700\u4E0A\u4F4D\u306B\u3059\u308B",resolve:(ctx,ref,flag)=>ctx.resolver.department(ref,flag)},{kind:"integer",flag:"--sor\
|
|
7
7
|
t",key:"sort",label:"\u8868\u793A\u9806",min:0,summary:"\u8868\u793A\u9806\uFF080\u4EE5\u4E0A\u306E\u6574\u6570\uFF09"},{kind:"date",flag:"--valid-from",key:"valid_from",summary:"\u6709\u52B9\u958B\u59CB\u65E5\uFF08YYYY-MM-DD\u30FBnone \u3067\u6D88\u3059\uFF09"},{kind:"date",flag:"--valid-to",key:"valid_to",summary:"\u6709\u52B9\u7D42\u4E86\u65E5\uFF08YYYY-MM-DD\u30FBnone \u3067\u6D88\u3059\uFF09\u3002\u3053\u306E\u65E5\u306E\u7FCC\u65E5\u304B\u3089\u7121\u52B9\u306B\u306A\u308B"},{kind:"boolean",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{depositDomain,depositIdArg,describeDeposit,excerpt,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden,sendAtomic}from"./chunk-
|
|
4
|
-
import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-
|
|
3
|
+
import{depositDomain,depositIdArg,describeDeposit,excerpt,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden,sendAtomic}from"./chunk-U5EYLW6X.js";import"./chunk-QLENN5DD.js";import"./chunk-4RNL462J.js";import"./chunk-RX5HWI4L.js";import"./chunk-JJSBBWJ5.js";import"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";
|
|
4
|
+
import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{depositDomain,depositIdArg,describeDeposit,excerpt,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden,sendAtomic};
|