@tocca-systems/twp-cli 0.79.0 → 0.80.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 +6 -0
- package/README.md +4 -3
- package/dist/{api-command-Y6J7EAOT.js → api-command-AGJWCRRX.js} +1 -1
- package/dist/{app-YVRIMXZY.js → app-VWGA36NA.js} +1 -1
- package/dist/{chunk-64VHXDB6.js → chunk-JYASAM2R.js} +2 -2
- package/dist/{chunk-YV65V2F6.js → chunk-M6FZ62YR.js} +16 -8
- package/dist/{chunk-DJ5OD2HW.js → chunk-OBILH2O7.js} +1 -1
- package/dist/cli.js +10 -10
- package/dist/{commands-UDG7E3X3.js → commands-D65LPET6.js} +36 -31
- package/dist/{domain-knowledge-5SCZLCPF.js → domain-knowledge-SZZCV6IO.js} +35 -20
- package/dist/{media-D7BZTPXD.js → media-6SUIEOKC.js} +1 -1
- package/dist/{plan-submit-ELEIJM6I.js → plan-submit-4NT4OC7J.js} +1 -1
- package/dist/{registry-TFHSCQK3.js → registry-KMZLMCME.js} +1 -1
- package/dist/{run-EO7J3QYK.js → run-IWCVSEQF.js} +1 -1
- package/package.json +1 -1
package/CHANGELOG.public.md
CHANGED
|
@@ -11,6 +11,12 @@
|
|
|
11
11
|
`CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
|
|
12
12
|
-->
|
|
13
13
|
|
|
14
|
+
## 0.80.0
|
|
15
|
+
|
|
16
|
+
ドメイン知識の記事の更新・移動・削除で `--if-revision <版>` を指定できるようになりました。`twp knowledge doc get` で読んだ版から記事が変わっていれば、上書きせずに止まります。
|
|
17
|
+
|
|
18
|
+
`twp task-loop` は、前回の実行が待ち条件(`resume_after=` / `blocked_by=` / `pr_head=`)を契約行に書いて据え置いたタスクを、条件が成立するまで同じスキルで再投入しなくなりました(最長6時間)。
|
|
19
|
+
|
|
14
20
|
## 0.79.0
|
|
15
21
|
|
|
16
22
|
要員調整ボードを CLI から参照・更新できるようになりました(`twp staffing-board`)。表の表示、工数の更新、仮アサイン・メモの登録、時点スナップショットの保存と前回との差分の確認ができます。
|
package/README.md
CHANGED
|
@@ -1490,14 +1490,15 @@ twp knowledge delete <KB> --yes
|
|
|
1490
1490
|
twp knowledge doc list <KB> [--prefix <ディレクトリ>] [--depth <深さ>]
|
|
1491
1491
|
twp knowledge doc get <KB> <パス> --output text
|
|
1492
1492
|
twp knowledge doc create <KB> <パス> --title <件名> --content-file <パス|-> [--summary <要約>] [--tag <タグ>]...
|
|
1493
|
-
twp knowledge doc update <KB> <パス> [--title <件名>] [--content-file <パス|->] [--summary <要約>|--clear-summary] [--tag <タグ>]... [--clear-tags]
|
|
1494
|
-
twp knowledge doc move <KB> <移動元のパス> <移動先のパス>
|
|
1495
|
-
twp knowledge doc delete <KB> <パス> --yes
|
|
1493
|
+
twp knowledge doc update <KB> <パス> [--title <件名>] [--content-file <パス|->] [--summary <要約>|--clear-summary] [--tag <タグ>]... [--clear-tags] [--if-revision <版>]
|
|
1494
|
+
twp knowledge doc move <KB> <移動元のパス> <移動先のパス> [--if-revision <版>]
|
|
1495
|
+
twp knowledge doc delete <KB> <パス> --yes [--if-revision <版>]
|
|
1496
1496
|
```
|
|
1497
1497
|
|
|
1498
1498
|
- プロジェクトの wiki(`twp wiki`)とは別の機能です。`<KB>` はナレッジベースの ID か slug です
|
|
1499
1499
|
- 記事の `<パス>` は `/guide/setup.md` のように指定します(先頭の `/` は省けます)。各階層は英数字で始まり、英数字・`.` `_` `-` だけを使えます。`..` や末尾の `/` は送る前に止めます
|
|
1500
1500
|
- 本文は `--content-file` のファイル(`-` で標準入力)から読み、Markdown のまま加工せずに送ります(上限 300KB)。サーバは保存時に本文の前後の空白(末尾の改行を含む)を落とします。`doc get --output text` は本文の Markdown をそのまま出します
|
|
1501
|
+
- `doc update` / `move` / `delete` の `--if-revision <版>` は、記事の版(`doc get` の `revision`。どの出力形式でも出ます)が一致するときだけ書き込みます。送る直前に照合し、違えば何も送らずに終了コード 3 で止まります。書き込み時にもサーバが照合し、間に他の更新が入っていれば 409(「ほかの人がこの記事を更新しました」)で何も変えずに終了コード 3 です。`move` は移動元の版を照合します。版の導入前に作られた記事の版は 0 です。`--if-revision` を付けない `doc update` も、サーバが読んだ版を条件に書くので、読んでから書くまでの間の他の更新は消しません
|
|
1501
1502
|
- `doc list` は本文を含みません。サーバが1回に読む上限(5,000 件)を超える KB では、出てこない記事があることを stderr で知らせます
|
|
1502
1503
|
- `twp knowledge delete` は配下の記事もまとめて削除します。送る前に KB の名前と記事の件数を stderr に出します
|
|
1503
1504
|
- KB の作成・設定変更・削除はドメイン知識の管理者(admin)だけ、記事の作成・編集は member 以上です。権限が無ければサーバの文面をそのまま出して終了コード 3 です
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-
|
|
3
|
+
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-OBILH2O7.js";import"./chunk-JYASAM2R.js";import{renderOutput}from"./chunk-PO35MCYP.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";
|
|
4
4
|
import{redactSecretValues,redactSecrets,withDebug}from"./chunk-LDBYJPRD.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,
|
|
5
5
|
readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import{ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,resolveConfiguredOutput,resolveProfile}from"./chunk-EDF4U5BT.js";
|
|
6
6
|
import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-MLRBDF44.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
|
|
@@ -1212,7 +1212,7 @@ cwd()){const listed=await gitListFiles(cwd2);const raw=listed??await walkFiles(c
|
|
|
1212
1212
|
1;const after=/^[^\s]*/.exec(text.slice(cursor))?.[0]??"";return{query,start,end:cursor+after.length}}var TWP_SLASH_ROUTES={"/tasks":{domain:"task",operation:"list"},"/task":{domain:"task",operation:"get"},"/projects":{domain:"project",operation:"list"}};function isTwpSlashCommand(name){return Object.hasOwn(TWP_SLASH_ROUTES,name)}async function runTwpSlashCommand(name,args,deps){const route=TWP_SLASH_ROUTES[name];if(!Object.hasOwn(TWP_SLASH_ROUTES,name)||route===void 0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}
|
|
1213
1213
|
`}}const parsed=parseArgv([route.domain,route.operation,...args]);if(parsed.command!=="domain"||parsed.domain!==route.domain){return{code:2,out:"",err:`${name}: \u3053\u306E\u5F15\u6570\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08${args.join(" ")}\uFF09
|
|
1214
1214
|
`}}if(parsed.unknown.length>0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u5F15\u6570: ${parsed.unknown.join(" ")}
|
|
1215
|
-
`}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-
|
|
1215
|
+
`}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-IWCVSEQF.js");try{const code=await runDomain({domain:route.domain,...parsed.operation!==void 0?{operation:parsed.operation}:
|
|
1216
1216
|
{},argv:parsed.domainArgv,help:parsed.domainHelp,globals,version:deps.version,io,...deps.fetchImpl!==void 0?{fetchImpl:deps.fetchImpl}:{}});return{code,out,err}}catch(e){return{code:1,out,err:`${err}${e.message}
|
|
1217
1217
|
`}}}var GIT_LOG_OUTPUT=["9f3c1a2 feat(ui): \u4E00\u89A7\u306E\u30D5\u30A3\u30EB\u30BF\u3092 URL \u30AF\u30A8\u30EA\u3068\u540C\u671F\u3059\u308B","4b8e0d7 fix(ui): \u4EEE\u60F3\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u884C\u9AD8\u3055\u3092\u5B9F\u6E2C\u5024\u306B\u5408\u308F\u305B\u308B","c15a99e refactor(api): \u4E00\u89A7\u53D6\u5F97\u306E\u30DA\u30FC\u30B8\u30F3\u30B0\u51E6\u7406\u3092\u5171\u901A\u5316\u3059\u308B","2d70f4b test: \u4E00\u89A7\u30D5\u30A3\u30EB\u30BF\u306E\u56DE\u5E30\u30C6\u30B9\u30C8\u3092\u8FFD\u52A0\u3059\u308B",
|
|
1218
1218
|
"a6e2b38 fix(api): \u7A7A\u306E\u691C\u7D22\u6761\u4EF6\u3067\u5168\u4EF6\u8FD4\u3089\u306A\u3044\u3088\u3046\u306B\u3059\u308B","7c40d51 chore(deps): \u958B\u767A\u4F9D\u5B58\u3092\u6700\u65B0\u3078\u66F4\u65B0\u3059\u308B","e83b1c6 docs: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u624B\u9806\u306B Node 22 \u306E\u524D\u63D0\u3092\u8FFD\u8A18\u3059\u308B","b91f7a4 fix(ui): \u30E2\u30FC\u30C0\u30EB\u306E\u91CD\u306A\u308A\u9806\u3092\u6307\u5B9A\u3059\u308B","5a2c8e0 perf(api): \u4E00\u89A7\u306E N+1 \u3092\u89E3\u6D88\u3059\u308B",
|
|
@@ -3,8 +3,8 @@ const require = __twpCreateRequire(import.meta.url);
|
|
|
3
3
|
var LOADERS={agent:async()=>(await import("./agent-WTDLGRNM.js")).agentDomain,"agent-loop":async()=>(await import("./agent-loop-ZGHJGHFQ.js")).agentLoopDomain,"ai-review-reason":async()=>(await import("./sales-ai-review-L5VW3DU3.js")).aiReviewReasonDomain,analysis:async()=>(await import("./analysis-H52FJIFO.js")).analysisDomain,announcement:async()=>(await import("./announcement-RTTVGW4K.js")).announcementDomain,attendance:async()=>(await import("./attendance-correct-OLWRCDP4.js")).attendanceDomainWithRecords,
|
|
4
4
|
backlog:async()=>(await import("./backlog-HDDV2NTC.js")).backlogDomain,budget:async()=>(await import("./budget-T246BG2P.js")).budgetDomain,"business-hours":async()=>(await import("./business-hours-I4X6YQS3.js")).businessHoursDomain,"business-place":async()=>(await import("./sales-master-BQML5IJT.js")).businessPlaceDomain,company:async()=>(await import("./company-2CRWKBJL.js")).companyDomain,contract:async()=>(await import("./contract-73RVPBYM.js")).contractDomain,customer:async()=>(await import("./company-2CRWKBJL.js")).
|
|
5
5
|
customerDomain,department:async()=>(await import("./department-GPVHVFFP.js")).departmentDomain,deposit:async()=>(await import("./deposit-3I3NV556.js")).depositDomain,estimate:async()=>(await import("./estimate-NLKTWCYI.js")).estimateDomain,evaluation:async()=>(await import("./evaluation-VP7OFTBS.js")).evaluationDomain,expense:async()=>(await import("./expense-O2O4623X.js")).expenseDomain,"fiscal-year":async()=>(await import("./fiscal-year-ZTCSF46U.js")).fiscalYearDomain,holiday:async()=>(await import("./holiday-WDI4CSNL.js")).
|
|
6
|
-
holidayDomain,"goal-sheet":async()=>(await import("./evaluation-VP7OFTBS.js")).goalSheetDomain,inquiry:async()=>(await import("./inquiry-4Q4BRYM3.js")).inquiryDomain,invoice:async()=>(await import("./invoice-BXSI6SMA.js")).invoiceDomain,"job-title":async()=>(await import("./job-title-NCFHCA4M.js")).jobTitleDomain,knowledge:async()=>(await import("./domain-knowledge-
|
|
7
|
-
licenseDomain,media:async()=>(await import("./media-
|
|
6
|
+
holidayDomain,"goal-sheet":async()=>(await import("./evaluation-VP7OFTBS.js")).goalSheetDomain,inquiry:async()=>(await import("./inquiry-4Q4BRYM3.js")).inquiryDomain,invoice:async()=>(await import("./invoice-BXSI6SMA.js")).invoiceDomain,"job-title":async()=>(await import("./job-title-NCFHCA4M.js")).jobTitleDomain,knowledge:async()=>(await import("./domain-knowledge-SZZCV6IO.js")).knowledgeDomain,leave:async()=>(await import("./leave-W4GHXMSE.js")).leaveDomain,license:async()=>(await import("./license-XSWDXSJE.js")).
|
|
7
|
+
licenseDomain,media:async()=>(await import("./media-6SUIEOKC.js")).mediaDomain,meeting:async()=>(await import("./knowledge-TCADQEPU.js")).meetingDomain,note:async()=>(await import("./knowledge-TCADQEPU.js")).noteDomain,notification:async()=>(await import("./notification-WP7CH734.js")).notificationDomain,onedrive:async()=>(await import("./onedrive-KWVOUGG6.js")).onedriveDomain,outlook:async()=>(await import("./outlook-GYRF5TXA.js")).outlookDomain,payee:async()=>(await import("./sales-master-BQML5IJT.js")).
|
|
8
8
|
payeeDomain,position:async()=>(await import("./position-H3NSDVKQ.js")).positionDomain,project:async()=>(await import("./project-HGUUMTEE.js")).projectDomain,prospect:async()=>(await import("./prospect-QY3NYP2A.js")).prospectDomain,purchase:async()=>(await import("./purchase-7XCGCQ2G.js")).purchaseDomain,qualification:async()=>(await import("./skill-4TSTVUXY.js")).qualificationDomain,receivable:async()=>(await import("./receivable-GW5WCVJ7.js")).receivableDomain,redmine:async()=>(await import("./redmine-644RTL42.js")).
|
|
9
9
|
redmineDomain,report:async()=>(await import("./report-P74LSHTE.js")).reportDomain,"rounding-setting":async()=>(await import("./sales-numbering-OW4O6WH6.js")).roundingSettingDomain,"seal-impression":async()=>(await import("./sales-master-BQML5IJT.js")).sealImpressionDomain,search:async()=>(await import("./search-BLMSVPIL.js")).searchDomain,segment:async()=>(await import("./segment-G4IPD43F.js")).segmentDomain,shift:async()=>(await import("./attendance-lists-TBUZCRKK.js")).shiftDomain,skill:async()=>(await import("./skill-4TSTVUXY.js")).
|
|
10
10
|
skillDomain,"staffing-board":async()=>(await import("./staffing-board-MQREMSVJ.js")).staffingBoardDomain,storage:async()=>(await import("./storage-AQDCEBDJ.js")).storageDomain,"supplier-payment":async()=>(await import("./supplier-payment-KRLYWEKY.js")).supplierPaymentDomain,support:async()=>(await import("./support-ITRXFVMK.js")).supportDomain,task:async()=>(await import("./task-AGNMPS4F.js")).taskDomain,teams:async()=>(await import("./teams-MZR3256V.js")).teamsDomain,user:async()=>(await import("./user-U4VHKBLE.js")).
|
|
@@ -62,12 +62,20 @@ return}const keys=parseKeysLine(logText,keysLine);if(keys===null){log.log(` \u2
|
|
|
62
62
|
return}let enqueued=0;const seen=new Set;for(const key of keys){if(seen.has(key))continue;seen.add(key);if(queueContainsKey(queued,key)){log.log(` \u23ED ${key} \u306E\u30A2\u30A4\u30C6\u30E0\u306F\u65E2\u306B\u30AD\u30E5\u30FC\u306B\u3042\u308A\u307E\u3059 \u2192 dev\u691C\u8A3C\u306E\u6295\u5165\u3092\u30B9\u30AD\u30C3\u30D7`);continue}const{itemId,detail}=await createItem(api,{label:`[P1] ${key} \u306Edev\u691C\u8A3C\uFF08develop\u30DE\u30FC\u30B8\u76F4\u5F8C\u30FB\u6DF7\u5165\u30DE\u30FC\u30B8\u9632\u6B62\u306E\u305F\u3081\u81EA\u52D5\u6295\u5165\uFF09 #ai:verify`,
|
|
63
63
|
prompt:`${verifySkill} ${key}`,ai_type:"claude",task_key:key});if(!itemId){log.log(` \u26A0\uFE0F ${key} \u306Edev\u691C\u8A3C\u30A2\u30A4\u30C6\u30E0\u6295\u5165\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${detail}`);continue}enqueued+=1;log.log(` \u{1F50E} ${key} \u306Edev\u691C\u8A3C\u3092\u30AD\u30E5\u30FC\u3078\u6295\u5165\u3057\u307E\u3057\u305F\uFF08${itemId}\uFF09`)}if(enqueued>0){log.log(` \u2192 develop\u30DE\u30FC\u30B8\u6E08\u307F ${enqueued} \u4EF6\u306Edev\u691C\u8A3C\u3092\u81EA\u52D5\u6295\u5165\u3057\u307E\u3057\u305F\uFF08\u8A08\u753BAI\u306E\u5224\u65AD\u306B\u59D4\u306D\u306A\u3044\uFF09`)}}var RECENT_ADVANCE_WINDOW_HOURS=6;function normalizeOutcomeCode(raw){const m=/\b([A-Z][A-Z0-9_]*_RESULT)\s*:\s*([A-Za-z_][A-Za-z0-9_]*)/.exec(raw??"");if(!m)return null;return`${m[1]}: ${(m[2]??"").toUpperCase()}`}function skillOfLedgerItem(item){const explicit=(item.skill??"").trim();if(explicit)return normalizeSkillName(explicit);return skillOfItem(item)}function advanceKey(taskKey,skill){return`${taskKey}#${normalizeSkillName(skill)}`}function buildRecentCandidateIndex(items,opts={}){const nowMicros=(opts.
|
|
64
64
|
now??new Date).getTime()*1e3;const latest=new Map;for(const item of items){if(item.status!==void 0&&item.status!=="completed")continue;const taskKey=(item.task_key??"").trim();if(taskKey==="")continue;const skill=skillOfLedgerItem(item);if(skill==="")continue;const sortOrder=typeof item.sort_order==="number"?item.sort_order:0;const key=advanceKey(taskKey,skill);const prev=latest.get(key);if(prev&&prev.sortOrder>=sortOrder)continue;latest.set(key,{sortOrder,candidate:{taskKey,skill,itemId:item.item_id,
|
|
65
|
-
outcomeCode:normalizeOutcomeCode(item.outcome_code),ageMinutes:sortOrder>0?Math.floor((nowMicros-sortOrder)/6e7):null}})}const index=new Map;for(const[key,value]of latest)index.set(key,value.candidate);return index}function findRecentCandidate(index,taskKey,skill){if(taskKey.trim()===""||skill.trim()==="")return null;return index.get(advanceKey(taskKey.trim(),skill))??null}async function resolveRecentAdvance(candidate,fetchResult,advancing){
|
|
66
|
-
outcomeCode;if(outcome===null){const result=await fetchResult(candidate.itemId);outcome=result?normalizeOutcomeCode(parseOutcomeCode(result)):null}if(outcome===null||!advancing.has(outcome))return null;return{taskKey:candidate.taskKey,skill:candidate.skill,outcome,itemId:candidate.itemId,ageMinutes:candidate.ageMinutes}}function formatRecentAdvance(advance){const age=advance.ageMinutes===null?"\u4E0D\u660E":`${advance.ageMinutes}\u5206\u524D`;
|
|
67
|
-
itemId}\uFF09`}function windowStartMicros(now,hours=RECENT_ADVANCE_WINDOW_HOURS){return Math.trunc((now.getTime()-hours*36e5)*1e3)}var MARKER_PAIR_RE=/^([^=\s,]+)=([a-z]+)$/;function decodeMarkerKey(raw){let key;try{key=decodeURIComponent(raw)}catch{return null}return isTaskKey(key)&&key.trim()===key?key:null}function parseTaskStatusSnapshot(prefetchSection){const m=/<!--\s*OPS_TASK_STATUS\s([^>]*?)-->/.exec(prefetchSection);if(!m||m[1]===void 0)
|
|
68
|
-
exec(body);const byKey=new Map;for(const token of body.trim().split(/\s+/)){for(const part of token.split(",")){const pair=MARKER_PAIR_RE.exec(part);if(!pair)continue;const key=decodeMarkerKey(pair[1]);if(key!==null)byKey.set(key,pair[2])}}return{complete:/\bcomplete=1\b/.test(body),windowHours:windowMatch?Number(windowMatch[1]):0,byKey}}function shouldSuppressForStatus(advance,snapshot,advancing){if(snapshot===null){return{suppress:false,
|
|
69
|
-
if(!snapshot.complete){return{suppress:false,reason:"\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u53D6\u5F97\u306B\u5931\u6557\u3057\u305F\u3082\u306E\u304C\u3042\u308B\uFF08complete=0\uFF09"}}if(snapshot.windowHours<RECENT_ADVANCE_WINDOW_HOURS){return{suppress:false,reason:`\u30DE\u30FC\u30AB\u30FC\u306E\u7A93\uFF08${snapshot.windowHours}h\uFF09\u304C\u6291\u6B62\u306E\u7A93\uFF08${RECENT_ADVANCE_WINDOW_HOURS}
|
|
70
|
-
void 0){return{suppress:false,reason:`${advance.outcome} \u306E\u60F3\u5B9A\u30B9\u30C6\u30FC\u30BF\u30B9\u304C\u5BFE\u5FDC\u8868\u306B\u7121\u3044`}}const current=snapshot.byKey.get(advance.taskKey);if(current===void 0){return{suppress:true,reason:""}}if(current===expected)return{suppress:true,reason:""};return{suppress:false,reason:`\u524D\u56DE\u306E\u5B9F\u884C\u306E\u5F8C\u306B\u30BF\u30B9\u30AF\u304C\u52D5\u3044\u305F\uFF08${expected}
|
|
65
|
+
outcomeCode:normalizeOutcomeCode(item.outcome_code),outcomeRaw:(item.outcome_code??"").trim()===""?null:item.outcome_code,ageMinutes:sortOrder>0?Math.floor((nowMicros-sortOrder)/6e7):null}})}const index=new Map;for(const[key,value]of latest)index.set(key,value.candidate);return index}function findRecentCandidate(index,taskKey,skill){if(taskKey.trim()===""||skill.trim()==="")return null;return index.get(advanceKey(taskKey.trim(),skill))??null}async function resolveRecentAdvance(candidate,fetchResult,advancing){
|
|
66
|
+
if(advancing.size===0)return null;let outcome=candidate.outcomeCode;if(outcome===null){const result=await fetchResult(candidate.itemId);outcome=result?normalizeOutcomeCode(parseOutcomeCode(result)):null}if(outcome===null||!advancing.has(outcome))return null;return{taskKey:candidate.taskKey,skill:candidate.skill,outcome,itemId:candidate.itemId,ageMinutes:candidate.ageMinutes}}function formatRecentAdvance(advance){const age=advance.ageMinutes===null?"\u4E0D\u660E":`${advance.ageMinutes}\u5206\u524D`;
|
|
67
|
+
return`${advance.outcome}\uFF08${age} / item=${advance.itemId}\uFF09`}function windowStartMicros(now,hours=RECENT_ADVANCE_WINDOW_HOURS){return Math.trunc((now.getTime()-hours*36e5)*1e3)}var MARKER_PAIR_RE=/^([^=\s,]+)=([a-z]+)$/;function decodeMarkerKey(raw){let key;try{key=decodeURIComponent(raw)}catch{return null}return isTaskKey(key)&&key.trim()===key?key:null}function parseTaskStatusSnapshot(prefetchSection){const m=/<!--\s*OPS_TASK_STATUS\s([^>]*?)-->/.exec(prefetchSection);if(!m||m[1]===void 0)
|
|
68
|
+
return null;const body=m[1];const windowMatch=/\bwindow_hours=(\d+)\b/.exec(body);const byKey=new Map;for(const token of body.trim().split(/\s+/)){for(const part of token.split(",")){const pair=MARKER_PAIR_RE.exec(part);if(!pair)continue;const key=decodeMarkerKey(pair[1]);if(key!==null)byKey.set(key,pair[2])}}return{complete:/\bcomplete=1\b/.test(body),windowHours:windowMatch?Number(windowMatch[1]):0,byKey}}function shouldSuppressForStatus(advance,snapshot,advancing){if(snapshot===null){return{suppress:false,
|
|
69
|
+
reason:"\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u30DE\u30FC\u30AB\u30FC\uFF08OPS_TASK_STATUS\uFF09\u304C prefetch \u306B\u7121\u3044"}}if(!snapshot.complete){return{suppress:false,reason:"\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u53D6\u5F97\u306B\u5931\u6557\u3057\u305F\u3082\u306E\u304C\u3042\u308B\uFF08complete=0\uFF09"}}if(snapshot.windowHours<RECENT_ADVANCE_WINDOW_HOURS){return{suppress:false,reason:`\u30DE\u30FC\u30AB\u30FC\u306E\u7A93\uFF08${snapshot.windowHours}h\uFF09\u304C\u6291\u6B62\u306E\u7A93\uFF08${RECENT_ADVANCE_WINDOW_HOURS}\
|
|
70
|
+
h\uFF09\u3088\u308A\u72ED\u3044`}}const expected=advancing.get(advance.outcome);if(expected===void 0){return{suppress:false,reason:`${advance.outcome} \u306E\u60F3\u5B9A\u30B9\u30C6\u30FC\u30BF\u30B9\u304C\u5BFE\u5FDC\u8868\u306B\u7121\u3044`}}const current=snapshot.byKey.get(advance.taskKey);if(current===void 0){return{suppress:true,reason:""}}if(current===expected)return{suppress:true,reason:""};return{suppress:false,reason:`\u524D\u56DE\u306E\u5B9F\u884C\u306E\u5F8C\u306B\u30BF\u30B9\u30AF\u304C\u52D5\u3044\u305F\uFF08${expected}\
|
|
71
|
+
\u2192 ${current}\uFF09\uFF1D\u65B0\u3057\u3044\u4ED5\u4E8B`}}var RESUME_HOLD_CAP_HOURS=6;function parseResumeCondition(raw){const head=/\b[A-Z][A-Z0-9_]*_RESULT\s*:([^|\n]*)/.exec(raw??"")?.[1]??"";let resumeAfter=null;const blockedBy=[];const prHeads=[];for(const token of head.trim().split(/\s+/)){const eq=token.indexOf("=");if(eq<=0)continue;const name=token.slice(0,eq);const value=token.slice(eq+1);if(name==="resume_after"){if(!/(Z|[+-]\d{2}:?\d{2})$/.test(value))continue;const t=new Date(value);
|
|
72
|
+
if(Number.isNaN(t.getTime()))continue;if(resumeAfter===null||t.getTime()<resumeAfter.getTime())resumeAfter=t}else if(name==="blocked_by"){for(const key of value.split(",")){if(isTaskKey(key)&&key.trim()===key)blockedBy.push(key)}}else if(name==="pr_head"){const m=/^([A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+)#(\d+)@([0-9a-fA-F]{7,40})$/.exec(value);if(m)prHeads.push({repo:m[1],number:Number(m[2]),sha:m[3].toLowerCase()})}}if(resumeAfter===null&&blockedBy.length===0&&prHeads.length===0)return null;return{resumeAfter,
|
|
73
|
+
blockedBy,prHeads}}async function resolveResumeHold(candidate,fetchResult,advancing){let raw=candidate.outcomeRaw??null;if(raw===null){const result=await fetchResult(candidate.itemId);raw=result?parseOutcomeCode(result):null}const outcome=normalizeOutcomeCode(raw);if(outcome===null||advancing.has(outcome))return null;const condition=parseResumeCondition(raw);if(condition===null)return null;return{taskKey:candidate.taskKey,skill:candidate.skill,outcome,condition,itemId:candidate.itemId,ageMinutes:candidate.
|
|
74
|
+
ageMinutes}}var HUMAN_HELD_STATUS_CODES=new Set(["humanjudge","humanwork","datafix","reqwait","spec","hold"]);function shaMatches(recorded,current){const c=current.toLowerCase();return c.startsWith(recorded)||recorded.startsWith(c)}async function shouldSuppressForResume(hold,snapshot,lookupPrHead,now=new Date){if(hold.ageMinutes===null){return{suppress:false,reason:"\u5148\u767A\u306E\u7D4C\u904E\u6642\u9593\u304C\u5206\u304B\u3089\u306A\u3044"}}if(hold.ageMinutes>=RESUME_HOLD_CAP_HOURS*60){return{
|
|
75
|
+
suppress:false,reason:`\u4E0A\u9650${RESUME_HOLD_CAP_HOURS}\u6642\u9593\u306B\u9054\u3057\u305F`}}const{resumeAfter,blockedBy,prHeads}=hold.condition;if(resumeAfter!==null&&now.getTime()>=resumeAfter.getTime()){return{suppress:false,reason:`resume_after\uFF08${resumeAfter.toISOString()}\uFF09\u3092\u904E\u304E\u305F`}}if(blockedBy.length>0){if(snapshot===null||!snapshot.complete||snapshot.windowHours<RESUME_HOLD_CAP_HOURS){return{suppress:false,reason:"blocked_by \u3092\u5224\u5B9A\u3067\u304D\u306A\u3044\uFF08OPS_TASK_STATUS \u304C\u7121\u3044\u30FB\u4E0D\u5B8C\u5168\u30FB\
|
|
76
|
+
\u7A93\u304C\u72ED\u3044\uFF09"}}const moved=blockedBy.find(key=>{const code=snapshot.byKey.get(key);return code!==void 0&&!HUMAN_HELD_STATUS_CODES.has(code)});if(moved!==void 0){return{suppress:false,reason:`\u963B\u5BB3\u30BF\u30B9\u30AF ${moved} \u304C\u76F4\u8FD1\u306B\u52D5\u3044\u305F\uFF08\u73FE\u5728 ${snapshot.byKey.get(moved)}\uFF09`}}}for(const pr of prHeads){const current=await lookupPrHead(pr.repo,pr.number);if(current===null){return{suppress:false,reason:`${pr.repo}#${pr.number} \u306E \
|
|
77
|
+
head \u3092\u53D6\u5F97\u3067\u304D\u306A\u3044`}}if(!shaMatches(pr.sha,current)){return{suppress:false,reason:`${pr.repo}#${pr.number} \u306E head \u304C\u5909\u308F\u3063\u305F\uFF08${pr.sha} \u2192 ${current.slice(0,12)}\uFF09`}}}return{suppress:true,reason:""}}function formatResumeHold(hold){const age=hold.ageMinutes===null?"\u4E0D\u660E":`${hold.ageMinutes}\u5206\u524D`;const parts=[];if(hold.condition.resumeAfter!==null)parts.push(`resume_after=${hold.condition.resumeAfter.toISOString()}`);
|
|
78
|
+
if(hold.condition.blockedBy.length>0)parts.push(`blocked_by=${hold.condition.blockedBy.join(",")}`);for(const pr of hold.condition.prHeads)parts.push(`pr_head=${pr.repo}#${pr.number}@${pr.sha}`);return`${hold.outcome} ${parts.join(" ")}\uFF08${age} / item=${hold.itemId}\uFF09`}function pendingTaskKeys(items){return new Set(items.map(p=>(p.task_key??"").trim()).filter(k=>k!==""))}async function buildDynamicBlocks(src){const now=src.now??new Date;let inflight=null;if(src.processing!==null){inflight={};for(const entry of inflightEntries(src.processing,now,src.staleHours)){inflight[entry.key]=`\u4ED6\u30E9\u30F3\u30CA\u30FC\u304C\u51E6\u7406\u4E2D\u3067\u3059\uFF08${formatInflightEntry(entry)}\uFF09`}}const pending=src.pending===null?null:[...pendingTaskKeys(src.pending)].
|
|
71
79
|
sort();let advanced=src.advancing.size===0?{}:null;const statusUsable=src.taskStatus!==null&&src.taskStatus.complete&&src.taskStatus.windowHours>=RECENT_ADVANCE_WINDOW_HOURS;if(src.recent!==null&&src.advancing.size>0&&statusUsable){advanced={};for(const[key,candidate]of buildRecentCandidateIndex(src.recent,{now})){const advance=await resolveRecentAdvance(candidate,async()=>null,src.advancing);if(advance===null)continue;if(!shouldSuppressForStatus(advance,src.taskStatus,src.advancing).suppress)continue;
|
|
72
80
|
advanced[key]=`\u76F4\u8FD1\u306B\u540C\u3058\u30B9\u30AD\u30EB\u304C\u72B6\u614B\u3092\u9032\u3081\u3066\u3044\u307E\u3059\uFF08${formatRecentAdvance(advance)}\uFF09`}}return{taken_at:now.toISOString(),inflight,pending,advanced}}function dynamicStepReasons(blocks,taskKey,skill){if(!blocks)return[];const key=taskKey.trim();if(key==="")return[];const reasons=[];const inflight=blocks.inflight?.[key];if(inflight!==void 0)reasons.push(`${key} \u306F${inflight}`);if(blocks.pending?.includes(key))reasons.
|
|
73
81
|
push(`${key} \u306F\u65E2\u306B\u30AD\u30E5\u30FC\u5F85\u3061\uFF08pending\uFF09\u306B\u5C45\u307E\u3059`);const advanced=skill.trim()===""?void 0:blocks.advanced?.[advanceKey(key,skill)];if(advanced!==void 0)reasons.push(`${key} \u306F${advanced}`);return reasons}function unavailableChecks(blocks){if(blocks===null)return["\u51E6\u7406\u4E2D","\u30AD\u30E5\u30FC\u5F85\u3061","\u76F4\u8FD1\u3067\u72B6\u614B\u3092\u9032\u3081\u305F"];const out=[];if(blocks.inflight===null)out.push("\u51E6\u7406\u4E2D");
|
|
@@ -94,5 +102,5 @@ ${JSON.stringify(check,null,2)}
|
|
|
94
102
|
`)}finally{setSkillPrefix(before)}if(!check.accepted){if(!opts.check)recordRejection(dir,token,check);deps.stderr("\u68C4\u5374\u304C\u3042\u308B\u305F\u3081\u63D0\u51FA\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u7406\u7531\u3092\u76F4\u3057\u3066\u51FA\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\n");if(readSubmission(submissionPath(dir,token))!==null){deps.stderr("\uFF08\u524D\u56DE\u53D7\u7406\u3057\u305F\u63D0\u51FA\u304C\u6709\u52B9\u306A\u307E\u307E\u3067\u3059\u3002\u51FA\u3057\u76F4\u3055\u306A\u3051\u308C\u3070\u30EB\u30FC\u30D7\u306F\u305D\u308C\u3092\u767B\u9332\u3057\u307E\u3059\uFF09\n")}
|
|
95
103
|
return 1}plan=parsed}if(opts.check){deps.stdout(opts.empty?"\u691C\u67FB\u306E\u307F: \u7A7A\u306E\u8A08\u753B\uFF080\u4EF6\uFF09\n":"\u691C\u67FB\u306E\u307F: \u7F6E\u3044\u3066\u3044\u307E\u305B\u3093\uFF08--check\uFF09\n");return 0}const submitted={plan,empty:opts.empty,submitted_at:new Date().toISOString()};writeAtomic(submissionPath(dir,token),JSON.stringify(submitted));deps.stdout(opts.empty?"\u7A7A\u306E\u8A08\u753B\uFF080\u4EF6\uFF09\u3092\u63D0\u51FA\u3057\u307E\u3057\u305F\u3002\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u306E\u7D42\u4E86\u5F8C\u3001\u4F55\u3082\u7A4D\u307F\u307E\u305B\u3093\n":
|
|
96
104
|
`\u8A08\u753B\uFF08${plan.steps.length}\u4EF6\uFF09\u3092\u63D0\u51FA\u3057\u307E\u3057\u305F\u3002\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u306E\u7D42\u4E86\u5F8C\u306B\u30EB\u30FC\u30D7\u304C\u4E00\u5EA6\u306B\u767B\u9332\u3057\u307E\u3059\uFF08\u51FA\u3057\u76F4\u3059\u3068\u6700\u5F8C\u306E\u63D0\u51FA\u304C\u6709\u52B9\uFF09
|
|
97
|
-
`);return 0}export{createItem,ReleaseOutcomeLog,parseReleaseResult,parseOutcomeCode,enqueueBlockerRecovery,enqueueReleasePhase5Recovery,enqueueReleasePartialMergeRerun,enqueueDevVerifyForMerged,staleFloorHours,inflightStaleHours,inflightEntries,formatInflightEntry,RECENT_ADVANCE_WINDOW_HOURS,buildRecentCandidateIndex,findRecentCandidate,resolveRecentAdvance,formatRecentAdvance,windowStartMicros,parseTaskStatusSnapshot,shouldSuppressForStatus,
|
|
98
|
-
PLAN_TOKEN_ENV,PLAN_DIR_ENV,NO_PLAN_SESSION,fileSkillNames,openPlanSession,checkPlan,formatCheck,runPlanSubmit};
|
|
105
|
+
`);return 0}export{createItem,ReleaseOutcomeLog,parseReleaseResult,parseOutcomeCode,enqueueBlockerRecovery,enqueueReleasePhase5Recovery,enqueueReleasePartialMergeRerun,enqueueDevVerifyForMerged,staleFloorHours,inflightStaleHours,inflightEntries,formatInflightEntry,RECENT_ADVANCE_WINDOW_HOURS,buildRecentCandidateIndex,findRecentCandidate,resolveRecentAdvance,formatRecentAdvance,windowStartMicros,parseTaskStatusSnapshot,shouldSuppressForStatus,resolveResumeHold,shouldSuppressForResume,formatResumeHold,pendingTaskKeys,
|
|
106
|
+
buildDynamicBlocks,unavailableChecks,formatPlanResultLine,PLAN_TOKEN_ENV,PLAN_DIR_ENV,NO_PLAN_SESSION,fileSkillNames,openPlanSession,checkPlan,formatCheck,runPlanSubmit};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{loadDomain}from"./chunk-
|
|
3
|
+
import{loadDomain}from"./chunk-JYASAM2R.js";import{renderDocument,renderOutput}from"./chunk-PO35MCYP.js";import{JsonBodyWithView}from"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{redactSecretValues,redactSecrets,withDebug}from"./chunk-LDBYJPRD.js";import{parseOperationArgs}from"./chunk-RX5HWI4L.js";import{Resolver,requireDefaultProject}from"./chunk-RSSPNFSK.js";import{ResolveError}from"./chunk-HVZUXLQ4.js";import{ApiError,
|
|
4
4
|
MultipartBody,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,nextPageNotes,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,EXIT_API_CLIENT,EXIT_API_SERVER,EXIT_AUTH,EXIT_FAILURE,EXIT_OK,EXIT_USAGE,EXIT_WAIT_TIMEOUT,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";
|
|
5
5
|
import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,loadUserConfig,resolveConfiguredBacklogSpace,resolveConfiguredOutput,resolveProfile}from"./chunk-EDF4U5BT.js";import{HELP_TOKEN}from"./chunk-MLRBDF44.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import{stringWidth}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import fs from"fs";import path from"path";var NO_REDACT_FLAG={name:"--no-redact",summary:"\u5FDC\u7B54\u306E\u4F0F\u5B57\u5316\u3092\u89E3\u9664\u3057\u3066\u751F\u306E\u5024\u3092\u51FA\u3059\uFF08\u9375\u306E\u53D7\u3051\u53D6\u308A\u7B49\uFF09",takesValue:false};var NO_REDACT_NOTICE="\u6CE8\u8A18: --no-redact \u306E\u305F\u3081\u51FA\u529B\u3092\u4F0F\u5B57\u5316\u3057\u307E\u305B\u3093\uFF08\u7AEF\u672B\u3068\u30ED\u30B0\u306B\u5E73\u6587\u3067\u6B8B\u308A\u307E\u3059\uFF09\u3002";function withCommonFlags(flags){return flags.some(flag=>flag.
|
|
6
6
|
name===NO_REDACT_FLAG.name)?flags:[...flags,NO_REDACT_FLAG]}function alignedList(entries,indent=" "){const width=entries.reduce((max,[left])=>Math.max(max,stringWidth(left)),0);return entries.map(([left,right])=>`${indent}${left}${" ".repeat(Math.max(0,width-stringWidth(left)))} ${right}`).join("\n")}function subresourcesOf(resource){return resource.subresources??[]}function renderResourceHelp(resource,path2){const subresources=subresourcesOf(resource);const operationSection=resource.operations.length===0?"":`
|
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-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.
|
|
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.80.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
|
|
@@ -971,15 +971,15 @@ import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{parseArgv}from"./chu
|
|
|
971
971
|
twp knowledge doc list <KB>
|
|
972
972
|
KB \u306E\u8A18\u4E8B\u3092\u4E00\u89A7\u3059\u308B\uFF08--prefix\u30FB--depth\uFF09
|
|
973
973
|
twp knowledge doc get <KB> <\u30D1\u30B9>
|
|
974
|
-
\u8A18\u4E8B\u3092\u8868\u793A\u3059\u308B\uFF08--output text \u3067\u672C\u6587\u306E Markdown \u3092\u8AAD\u3080\uFF09
|
|
974
|
+
\u8A18\u4E8B\u3092\u8868\u793A\u3059\u308B\uFF08--output text \u3067\u672C\u6587\u306E Markdown \u3092\u8AAD\u3080\u30FB\u7248 revision \u3082\u51FA\u3059\uFF09
|
|
975
975
|
twp knowledge doc create <KB> <\u30D1\u30B9>
|
|
976
976
|
\u8A18\u4E8B\u3092\u4F5C\u6210\u3059\u308B\uFF08\u672C\u6587\u306F --content-file \u306E\u30D5\u30A1\u30A4\u30EB\u304B\u3089\uFF09
|
|
977
977
|
twp knowledge doc update <KB> <\u30D1\u30B9>
|
|
978
|
-
\u8A18\u4E8B\u306E\u4EF6\u540D\u30FB\u672C\u6587\u30FB\u8981\u7D04\u30FB\u30BF\u30B0\u3092\u66F4\u65B0\u3059\u308B
|
|
978
|
+
\u8A18\u4E8B\u306E\u4EF6\u540D\u30FB\u672C\u6587\u30FB\u8981\u7D04\u30FB\u30BF\u30B0\u3092\u66F4\u65B0\u3059\u308B\uFF08--if-revision \u3067\u7248\u3092\u7167\u5408\uFF09
|
|
979
979
|
twp knowledge doc move <KB> <\u79FB\u52D5\u5143> <\u79FB\u52D5\u5148>
|
|
980
|
-
\u8A18\u4E8B\u306E\u30D1\u30B9\u3092\u5909\u3048\u308B\uFF08\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5909\u66F4\u30FB\u30EA\u30CD\u30FC\u30E0\uFF09
|
|
980
|
+
\u8A18\u4E8B\u306E\u30D1\u30B9\u3092\u5909\u3048\u308B\uFF08\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5909\u66F4\u30FB\u30EA\u30CD\u30FC\u30E0\u30FB--if-revision \u3067\u7248\u3092\u7167\u5408\uFF09
|
|
981
981
|
twp knowledge doc delete <KB> <\u30D1\u30B9>
|
|
982
|
-
\u8A18\u4E8B\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09
|
|
982
|
+
\u8A18\u4E8B\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\u30FB--if-revision \u3067\u7248\u3092\u7167\u5408\uFF09
|
|
983
983
|
twp estimate list \u898B\u7A4D\u3092\u4E00\u89A7\u3059\u308B\uFF08--status\u30FB--customer\u30FB--assignee\u30FB--from/--to\uFF09
|
|
984
984
|
twp estimate get <\u898B\u7A4DID>
|
|
985
985
|
\u898B\u7A4D1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B
|
|
@@ -1392,15 +1392,15 @@ TUI \u5185:
|
|
|
1392
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
|
|
1393
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
|
|
1394
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-
|
|
1395
|
+
const[{loadDomain},{loadUserConfig}]=await Promise.all([import("./registry-KMZLMCME.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=
|
|
1396
1396
|
await runConfigure(rest);return}const args=parseArgv(process.argv.slice(2));if(args.command==="version"){process.stdout.write(`${VERSION}
|
|
1397
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(" ")}
|
|
1398
1398
|
|
|
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-
|
|
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-
|
|
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-IWCVSEQF.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-AGJWCRRX.js");process.exitCode=await runApiCommand({argv:args.domainArgv,help:args.domainHelp,globals:{...args.profile!==void 0?{profile:args.
|
|
1401
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-
|
|
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-D65LPET6.js");process.exitCode=await runTaskLoop(
|
|
1403
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.
|
|
1404
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
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-
|
|
1406
|
+
profile}:{},version:VERSION});return}const{startTui}=await import("./app-VWGA36NA.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,12 +1,12 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,promptSection}from"./chunk-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,
|
|
4
|
-
parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-
|
|
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,
|
|
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";
|
|
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,
|
|
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";
|
|
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(
|
|
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,formatResumeHold,inflightEntries,inflightStaleHours,openPlanSession,
|
|
4
|
+
parseOutcomeCode,parseReleaseResult,parseTaskStatusSnapshot,pendingTaskKeys,resolveRecentAdvance,resolveResumeHold,shouldSuppressForResume,shouldSuppressForStatus,staleFloorHours,unavailableChecks,windowStartMicros}from"./chunk-M6FZ62YR.js";import{EngineNotConfiguredError,NoopEngine,UnknownEngineError,aiUnavailableLabel,assertKnownEngine,failureHint,isAiUnavailable,needsHumanToRestoreAi}from"./chunk-ZOOEH7ZE.js";import{ServerSkillCatalog,formatSkillOrigins}from"./chunk-QGRBZ2C2.js";
|
|
5
|
+
import{claudeConfigDir,resolveDetectDeps}from"./chunk-5SONMN6K.js";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,
|
|
6
|
+
stepToItem,zeroTargetDropReasons}from"./chunk-QGJYT4NH.js";import{redactLoopOutput}from"./chunk-JUJSF5ZG.js";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";
|
|
7
|
+
import{exclusiveInflightEntries,formatExclusiveEntry,normalizeSkillName,spawnSyncResolved}from"./chunk-FABDZBDZ.js";import{setSkillPrefix,skillCommand,skillFromPrompt,stripSkillCommand}from"./chunk-6CS5L24D.js";import{killProcessTree}from"./chunk-N2UVRM3Z.js";import{AgentLoopApi,describeError,filterByStatus,isPermanent,pick,pickString}from"./chunk-O52RKZCC.js";import"./chunk-LDBYJPRD.js";import{PRIVATE_PROJECT_REF,isPrivateProjectId,isPrivateProjectRef,privateProjectId,
|
|
8
|
+
projectFileKey}from"./chunk-RMFLTSOV.js";import{ULID_RE,loopProjectIdPolicy,resolveProjectRef}from"./chunk-HVZUXLQ4.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{joinFor}from"./chunk-PMOUHEJQ.js";import{AuthSession}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{compareVersionCores,parseVersionCore}from"./chunk-DXXFUNYN.js";import"./chunk-5WGOHFAS.js";import{effectiveApiUrl,resolveProfile}from"./chunk-EDF4U5BT.js";
|
|
9
|
+
import{twpHomeDir}from"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import fs9 from"fs";import path7 from"path";import fs from"fs";import path from"path";var LoopLogger=class{constructor(runnerId,logFile,out=process.stdout,now=()=>new Date){this.runnerId=runnerId;this.out=out;this.now=now;if(logFile){fs.mkdirSync(path.dirname(logFile),{recursive:true});this.stream=fs.createWriteStream(logFile,{flags:"a"})}}runnerId;out;now;stream=null;log(message){const d=this.now();const ts=`${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;const line=`[${ts}] [${this.runnerId}] ${stripTerminalControls(
|
|
10
10
|
message)}
|
|
11
11
|
`;this.out.write(line);this.stream?.write(line)}separator(){this.log("=".repeat(60))}close(){this.stream?.end();this.stream=null}};function pad(n){return String(n).padStart(2,"0")}function rotateLogs(dir,retentionDays,now=Date.now()){if(retentionDays<=0)return;const cutoff=now-retentionDays*864e5;let entries;try{entries=fs.readdirSync(dir)}catch{return}for(const name of entries){if(!/^(agent-loop|task-loop|step|plan|schedule-enqueued)-.*\.(log|txt)$/.test(name))continue;const file=path.join(dir,
|
|
12
12
|
name);try{if(fs.statSync(file).mtimeMs<cutoff)fs.rmSync(file,{force:true})}catch{}}}import fs6 from"fs";import os2 from"os";import path4 from"path";var MAX_OUTCOME_DETAIL_LENGTH=1e3;function parseOutcomeDetail(logText){const matches=[...logText.matchAll(/\b[A-Z][A-Z0-9_]*_RESULT:[^\n]*/g)];const line=matches.at(-1)?.[0];if(line===void 0)return null;const sep=line.indexOf("|");if(sep<0)return null;const detail=line.slice(sep+1).split("|").map(s=>s.trim()).filter(s=>s!=="").join(" | ");return detail===""?null:detail.slice(0,MAX_OUTCOME_DETAIL_LENGTH)}var str=v=>typeof v==="string"&&v!==""?v:null;function toRun(v){if(v===null||typeof v!=="obje\
|
|
@@ -99,11 +99,13 @@ continue}try{const ageDays=(now-fs4.statSync(file).mtimeMs)/864e5;if(ageDays>thi
|
|
|
99
99
|
continue}const{run_id:runId,...rest}=redactStashedPayload(payload);const res=await this.api.update(itemId,rest,runId||this.config.runId);if(res.ok){fs4.rmSync(file,{force:true});this.log.log(` \u2705 \u5B9F\u884C\u7D50\u679C\u3092\u518D\u9001\u3057\u307E\u3057\u305F: item=${itemId}\uFF08status=${payload.status}\uFF09`);if(payload.status==="completed")recorded.push(itemId)}else if(res.status===409){fs4.rmSync(file,{force:true});this.log.log(` \u26A0\uFE0F \u518D\u9001\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08409\u30FB\u65E2\u306B\u5225\u306E\u30E9\u30F3\u30CA\u30FC/\u5225\u306E run \u304C\u4FDD\u6301\uFF09: item=${itemId}\
|
|
100
100
|
\u2192 \u7D50\u679C\u306F\u7834\u68C4\u3057\u307E\u3059`)}else if(res.status!==null&&res.status>=400&&res.status<500&&res.status!==408&&res.status!==429){fs4.rmSync(file,{force:true});this.log.log(` \u26D4 \u30B5\u30FC\u30D0\u306B\u6052\u4E45\u7684\u306B\u62D2\u5426\u3055\u308C\u305F\u305F\u3081\u7834\u68C4\u3057\u307E\u3059\uFF08http=${res.status}\uFF09: item=${itemId}`)}else{this.log.log(` \u26A0\uFE0F \u518D\u9001\u306B\u5931\u6557\uFF08${describeError(res)}\uFF09: item=${itemId}\u3002\u6B21\u30B5\u30A4\u30AF\u30EB\u3067\u518D\u8A66\
|
|
101
101
|
\u884C\u3057\u307E\u3059`)}}return recorded}};var PLAN_SUPPRESS_REASONS={"step \u306E\u5F62\u304C\u4E0D\u6B63":"invalid_step","\u30BF\u30B9\u30AF\u30AD\u30FC\u304C\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0":"placeholder_key","release-deploy \u306E\u7A7A\u632F\u308A\u9632\u6B62":"release_deploy_guard","\u5BFE\u8C610\u4EF6":"zero_target","\u4ED6\u30E9\u30F3\u30CA\u30FC\u304C\u51E6\u7406\u4E2D":"inflight","\u65E2\u306B\u30AD\u30E5\u30FC\u5F85\u3061":"already_pending","\u540C\u4E00\u8A08\u753B\u5185\u306E\u91CD\u8907\u30AD\u30FC":"duplicate_in_\
|
|
102
|
-
plan","\u4EBA\u306B\u30DC\u30FC\u30EB\u304C\u3042\u308B":"human_ball","\u524D\u56DE\u304C\u72B6\u614B\u3092\u9032\u3081\u305F":"recently_advanced","\u6642\u9593\u5E2F\u30B2\u30FC\u30C8":"schedule_gate","\u8A08\u753B\u30ED\u30C3\u30AF\u55AA\u5931\u3067\u672A\u51E6\u7406":"lock_lost","\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C":"exclusive_skill"};var ENQUEUE_ERROR_PREFIX="\u6295\u5165\u30A8\u30E9\u30FC: ";
|
|
103
|
-
var MAX_CONTRACT_LINE_CHARS=1e3;var MAX_LABEL_CHARS=300;var MAX_DETAIL_CHARS=500;var MAX_TASK_KEY_CHARS=64;function clip(value,max){const s=(value??"").trim();return s===""?null:s.slice(0,max)}function dropToStep(drop){const base={task_key:clip(drop.task_key,MAX_TASK_KEY_CHARS),label:clip(drop.skill,MAX_LABEL_CHARS),item_id:null};if(drop.reason.startsWith(ENQUEUE_ERROR_PREFIX)){return{...base,outcome:"error",reason:"enqueue_error",
|
|
104
|
-
length)),MAX_DETAIL_CHARS)}}const code=PLAN_SUPPRESS_REASONS[drop.reason];return{...base,outcome:"suppressed",reason:code??"other",detail:code===void 0?clip(redactLoopOutput(drop.reason),MAX_DETAIL_CHARS):null}}function extractContractLines(output){const lines=[...output.matchAll(/^.*\b[A-Z][A-Z0-9_]*_RESULT:.*$/gm)].map(m=>m[0].trim().slice(0,MAX_CONTRACT_LINE_CHARS)).filter(l=>l!=="");return lines.slice(-MAX_CONTRACT_LINES)}function standaloneRecord(result,scheduled){
|
|
105
|
-
ai_model:null,cost_usd:null,tokens_in:null,tokens_out:null,turns:null,duration_ms:null,final_report:null,contract_lines:[],steps:[],scheduled:scheduled.slice(0,MAX_SCHEDULED)}}function planRecord(input){const{engine,summary}=input;const metrics=engine?.metrics;const steps=[...input.enqueuedSteps.map(s=>({outcome:"enqueued",task_key:clip(s.task_key,MAX_TASK_KEY_CHARS),label:clip(s.label,MAX_LABEL_CHARS),item_id:s.item_id,reason:null,detail:null})),...(summary?.dropped??
|
|
106
|
-
engine?.output??"");return{result:input.result,ai_type:engine?.serverAiType??null,ai_model:null,cost_usd:metrics?.costUsd??null,tokens_in:metrics?.tokensIn??null,tokens_out:metrics?.tokensOut??null,turns:metrics?.turns??null,duration_ms:input.durationMs===null?null:Math.max(0,Math.trunc(input.durationMs)),final_report:output.trim()===""?null:truncateResult(output),contract_lines:extractContractLines(output),steps:steps.slice(0,MAX_STEPS),scheduled:input.
|
|
102
|
+
plan","\u4EBA\u306B\u30DC\u30FC\u30EB\u304C\u3042\u308B":"human_ball","\u524D\u56DE\u304C\u72B6\u614B\u3092\u9032\u3081\u305F":"recently_advanced","\u518D\u958B\u6761\u4EF6\u304C\u672A\u6210\u7ACB":"resume_pending","\u6642\u9593\u5E2F\u30B2\u30FC\u30C8":"schedule_gate","\u8A08\u753B\u30ED\u30C3\u30AF\u55AA\u5931\u3067\u672A\u51E6\u7406":"lock_lost","\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C":"exclusive_skill"};var ENQUEUE_ERROR_PREFIX="\u6295\u5165\u30A8\u30E9\u30FC: ";
|
|
103
|
+
var MAX_STEPS=100;var MAX_SCHEDULED=100;var MAX_CONTRACT_LINES=20;var MAX_CONTRACT_LINE_CHARS=1e3;var MAX_LABEL_CHARS=300;var MAX_DETAIL_CHARS=500;var MAX_TASK_KEY_CHARS=64;function clip(value,max){const s=(value??"").trim();return s===""?null:s.slice(0,max)}function dropToStep(drop){const base={task_key:clip(drop.task_key,MAX_TASK_KEY_CHARS),label:clip(drop.skill,MAX_LABEL_CHARS),item_id:null};if(drop.reason.startsWith(ENQUEUE_ERROR_PREFIX)){return{...base,outcome:"error",reason:"enqueue_error",
|
|
104
|
+
detail:clip(redactLoopOutput(drop.reason.slice(ENQUEUE_ERROR_PREFIX.length)),MAX_DETAIL_CHARS)}}const code=PLAN_SUPPRESS_REASONS[drop.reason];return{...base,outcome:"suppressed",reason:code??"other",detail:code===void 0?clip(redactLoopOutput(drop.reason),MAX_DETAIL_CHARS):null}}function extractContractLines(output){const lines=[...output.matchAll(/^.*\b[A-Z][A-Z0-9_]*_RESULT:.*$/gm)].map(m=>m[0].trim().slice(0,MAX_CONTRACT_LINE_CHARS)).filter(l=>l!=="");return lines.slice(-MAX_CONTRACT_LINES)}function standaloneRecord(result,scheduled){
|
|
105
|
+
return{result,ai_type:null,ai_model:null,cost_usd:null,tokens_in:null,tokens_out:null,turns:null,duration_ms:null,final_report:null,contract_lines:[],steps:[],scheduled:scheduled.slice(0,MAX_SCHEDULED)}}function planRecord(input){const{engine,summary}=input;const metrics=engine?.metrics;const steps=[...input.enqueuedSteps.map(s=>({outcome:"enqueued",task_key:clip(s.task_key,MAX_TASK_KEY_CHARS),label:clip(s.label,MAX_LABEL_CHARS),item_id:s.item_id,reason:null,detail:null})),...(summary?.dropped??
|
|
106
|
+
[]).map(dropToStep)];const output=redactLoopOutput(engine?.output??"");return{result:input.result,ai_type:engine?.serverAiType??null,ai_model:null,cost_usd:metrics?.costUsd??null,tokens_in:metrics?.tokensIn??null,tokens_out:metrics?.tokensOut??null,turns:metrics?.turns??null,duration_ms:input.durationMs===null?null:Math.max(0,Math.trunc(input.durationMs)),final_report:output.trim()===""?null:truncateResult(output),contract_lines:extractContractLines(output),steps:steps.slice(0,MAX_STEPS),scheduled:input.
|
|
107
|
+
scheduled.slice(0,MAX_SCHEDULED)}}import{execFile}from"child_process";async function lookupPrHead(repo,number,timeoutMs=15e3){if(!/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(repo)||!Number.isInteger(number)||number<=0)return null;const viaGh=await run("gh",["api",`repos/${repo}/pulls/${number}`,"--jq",".head.sha"],timeoutMs);const ghSha=/^([0-9a-f]{40})\s*$/.exec(viaGh??"")?.[1];if(ghSha)return ghSha;const viaGit=await run("git",["ls-remote",`https://github.com/${repo}.git`,`refs/pull/${number}/head`],timeoutMs);return/^([0-9a-f]{40})\s/m.
|
|
108
|
+
exec(viaGit??"")?.[1]??null}function run(file,args,timeoutMs){return new Promise(resolve=>{execFile(file,args,{timeout:timeoutMs,env:{...process.env,GIT_TERMINAL_PROMPT:"0",GH_PROMPT_DISABLED:"1"}},(err,stdout)=>resolve(err?null:String(stdout)))})}var USER_ID_RE=/^[A-Za-z0-9._-]{1,64}$/;var ProjectApi=class{constructor(apiUrl,session,fetchImpl=httpFetch){this.apiUrl=apiUrl;this.session=session;this.fetchImpl=fetchImpl}apiUrl;session;fetchImpl;async resolve(ref){if(isPrivateProjectRef(ref))return this.resolvePrivate();return resolveProjectRef(ref,path8=>this.get(path8),loopProjectIdPolicy)}async resolvePrivate(){const res=await this.get("/api/v2/user");if(!res.ok){throw new Error(`\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
|
|
107
109
|
status}\uFF09\u3002\u500B\u4EBA\u30AD\u30E5\u30FC\u3092\u56DE\u3059\u306B\u306F \`twp login\` \u304C\u5FC5\u8981\u3067\u3059\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const userId=res.json?.user?.id;if(typeof userId!=="string"||!USER_ID_RE.test(userId)){throw new Error(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u30E6\u30FC\u30B6\u30FCID\u3092\u500B\u4EBA\u30AD\u30E5\u30FC\u306EID\u306B\u4F7F\u3048\u307E\u305B\u3093\uFF08${String(
|
|
108
110
|
userId).slice(0,60)}\uFF09\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return{id:privateProjectId(userId),code:PRIVATE_PROJECT_REF,name:"\u500B\u4EBA\u30BF\u30B9\u30AF"}}async countByStatus(projectId,statusId){const res=await this.get(`/api/v2/projects/${projectId}/tasks?status_id=${encodeURIComponent(statusId)}&limit=1`);if(!res.ok){return{total:null,error:res.status===null?res.error??"\u901A\u4FE1\u5931\u6557":`HTTP ${res.status}`}}const total=res.json?.
|
|
109
111
|
pagination?.total;if(typeof total!=="number"){return{total:null,error:"\u5FDC\u7B54\u304B\u3089 pagination.total \u3092\u8AAD\u3081\u306A\u3044"}}return{total,error:null}}async get(path8){let token;try{token=await this.session.getAccessToken()}catch(err){return{ok:false,status:null,json:null,error:err.message}}try{const res=await this.fetchImpl(`${this.apiUrl}${path8}`,{headers:{Authorization:`Bearer ${token}`,"Content-Type":"application/json",Accept:"application/json"}});const raw=await res.text();
|
|
@@ -119,7 +121,7 @@ message}\uFF09`);return{allowed:true,reason:""}}return gateStatus(skill,this.now
|
|
|
119
121
|
log.log(` \u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u5C65\u6B74\u3092\u66F4\u65B0: ${res.scheduleId} \u2192 ${status}`)}async releaseWindow(scheduleId,windowKey,why){if(await this.record(scheduleId,windowKey,"failed")){this.deps.log.log(` \u3053\u306E\u67A0\u306F failed \u3068\u3057\u3066\u8FD4\u3057\u307E\u3057\u305F\uFF08\u7406\u7531: ${why}\u30FB\u6B21\u30B5\u30A4\u30AF\u30EB\u3067\u518D\u8A66\u884C\u3055\u308C\u307E\u3059\uFF09`)}else{this.deps.log.log(` \u26A0\uFE0F \u67A0\u3092 failed \u3068\u3057\u3066\u8FD4\u305B\u307E\u305B\
|
|
120
122
|
\u3093\u3067\u3057\u305F\uFF08\u7406\u7531: ${why}\uFF09\u3002\u30EA\u30FC\u30B9\u671F\u9650\u307E\u3067\u518D\u8A66\u884C\u3067\u304D\u307E\u305B\u3093`)}}async promptSection(enqueuedFile){const cfg=await this.loadConfig();if("error"in cfg){this.deps.log.log(` \u26A0\uFE0F \u8A08\u753B\u30D7\u30ED\u30F3\u30D7\u30C8\u7528\u306E\u5B9A\u671F\u30BB\u30AF\u30B7\u30E7\u30F3\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${cfg.error}`);this.deps.log.log(" \u8A08\u753BAI\u306B\u300C\u6295\u5165\u6E08\u307F\u306E\u5B9A\u671F\u30BF\u30B9\u30AF\u300D\u3092\u4F1D\u3048\
|
|
121
123
|
\u3089\u308C\u306A\u3044\u305F\u3081\u3001\u91CD\u8907\u6295\u5165\u306E\u6291\u6B62\u304C\u5F31\u307E\u308A\u307E\u3059");return""}const hist=await this.loadHistory();if("error"in hist){this.deps.log.log(` \u26A0\uFE0F \u5B9A\u671F\u30BB\u30AF\u30B7\u30E7\u30F3\u306E\u300C\u6B21\u56DE\u767A\u706B\u4E88\u5B9A\u300D\u3092\u7701\u7565\u3057\u307E\u3059\uFF08\u5C65\u6B74\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093: ${hist.error}\uFF09`)}const lines=readEnqueuedLines(enqueuedFile);return promptSection(
|
|
122
|
-
cfg.config,this.now(),"error"in hist?[]:hist.rows,lines,!("error"in hist))}};function readEnqueuedLines(file){if(!file)return[];let text;try{text=fs5.readFileSync(file,"utf8")}catch{return[]}return text.split("\n").filter(l=>l.trim()!=="").map(l=>l.replace(/\n$/,""))}async function refineCount(key,raw,hooks,cwd,
|
|
124
|
+
cfg.config,this.now(),"error"in hist?[]:hist.rows,lines,!("error"in hist))}};function readEnqueuedLines(file){if(!file)return[];let text;try{text=fs5.readFileSync(file,"utf8")}catch{return[]}return text.split("\n").filter(l=>l.trim()!=="").map(l=>l.replace(/\n$/,""))}async function refineCount(key,raw,hooks,cwd,run2=(hook,dir)=>runHook(hook,dir)){const hook=hooks.get(key);if(!hook||raw===null||raw===0)return{total:raw,note:null};const r=await run2(hook,cwd);const out=r.stdout.trim();if(!r.ok||!/^\d+$/.test(out)){return{total:raw,note:`${key}: \u6570\u3048\u76F4\u3057\u306B\u5931\u6557\u3057\u305F\u305F\u3081\u7D20\u306E\u4EF6\u6570 ${raw} \u3092\u4F7F\u3044\u307E\u3059\uFF08${r.ok?"\u51FA\u529B\u304C\u6574\u65701\u884C\u3067\u306F\u306A\u3044":r.reason}\uFF09`}}
|
|
123
125
|
const n=Number.parseInt(out,10);if(n>raw){return{total:raw,note:`${key}: \u6570\u3048\u76F4\u3057\u306E\u7D50\u679C ${n} \u304C\u7D20\u306E\u4EF6\u6570 ${raw} \u3092\u8D85\u3048\u308B\u305F\u3081\u7D20\u306E\u4EF6\u6570\u3092\u4F7F\u3044\u307E\u3059`}}return{total:n,note:`${key}: ${raw}\u4EF6\u306E\u3046\u3061\u30B2\u30FC\u30C8\u306B\u52B9\u304F\u3082\u306E ${n}\u4EF6\uFF08${hook.id}\uFF09`}}function exitReasonFor(outcome){if(outcome==="ok")return"ok";if(outcome==="timeout")return"timeout";if(outcome==="rate-limited")return"rate_limited";if(outcome==="aborted")return"interrupted";if(outcome==="max-turns")return"max_turns";return"error"}function withFailureHint(base,output){const hint=failureHint(redactLoopOutput(output));return hint===""?base:`${base} | ${hint}`}var STOP_WAIT_MAX_SEC=3600;var AI_RECOVERY_HINT="\u78BA\u8A8D: claude-auto-switch status \uFF0F \u5404AI CLI\u306E\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\uFF08twp task-loop setup \u3067\u691C\u51FA\u7D50\u679C\u304C\
|
|
124
126
|
\u51FA\u307E\u3059\uFF09";var ABORT_DRAIN_TIMEOUT_MS=15e3;function lastContractLine(logText,line){const prefix=line!==null&&/^[A-Z][A-Z0-9_]*$/.test(line)?line:"[A-Z][A-Z0-9_]*_RESULT";return[...logText.matchAll(new RegExp(`^(?:${prefix}):[^\\n]*`,"gm"))].at(-1)?.[0]??""}var TaskLoop=class{constructor(deps){this.deps=deps;this.writeback=new Writeback(deps.api,deps.config,deps.log);this.schedule=new ScheduleBridge({config:deps.config,log:deps.log,api:new ScheduleApi(deps.api),fetchCount:async(key,statusId)=>{
|
|
125
127
|
const{total,error}=await deps.projectApi.countByStatus(deps.config.projectId,statusId);if(error){deps.log.log(` \u26A0\uFE0F require_zero\u300C${key}\u300D\u306E\u4EF6\u6570\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${error}\uFF09\u3002\u3053\u306E\u67A0\u306F\u767A\u706B\u3057\u307E\u305B\u3093\uFF08fail-closed\uFF09`)}const refined=await refineCount(key,total,deps.config.operations.countHooks,deps.config.workspace);if(refined.note)deps.log.log(` ${refined.note}`);
|
|
@@ -184,7 +186,7 @@ planGateFingerprint=null;if(fingerprint===null)return;const statePath=planGateSt
|
|
|
184
186
|
false;const planStartedMs=Date.now();let engineResult=null;const enqueuedSteps=[];const setRecord=(result2,summary2)=>{this.planRunRecord=planRecord({result:result2,engine:engineResult,durationMs:Date.now()-planStartedMs,summary:summary2,enqueuedSteps,scheduled:this.planRunScheduled})};const planSkill=config.operations.planSkill;if(planSkill===null)return"failed";log.separator();log.log("Phase 1: \u8A08\u753B\u3092\u7ACB\u6848\u3057\u3066\u30AD\u30E5\u30FC\u306B\u683C\u7D0D...");log.separator();
|
|
185
187
|
const planLogFile=path4.join(config.logDir,`plan-${this.timestamp}-${cycle}.log`);const enqueuedFile=path4.join(config.logDir,`schedule-enqueued-${this.timestamp}.txt`);const scheduleSection=await this.schedule.promptSection(enqueuedFile);if(config.prefetch.length>0)log.log(`\u8A08\u753B\u7528\u30C7\u30FC\u30BF\u3092\u4E8B\u524D\u53D6\u5F97\u4E2D\uFF08\u30D5\u30C3\u30AF ${config.prefetch.length}\u4EF6\uFF09...`);const prefetchSection=await runPrefetch(config.prefetch,config.workspace,m=>log.log(
|
|
186
188
|
m));const excludeKeys=parsePlanExcludeKeys(prefetchSection);if(excludeKeys.size>0){log.log(` \u8A08\u753B\u5019\u88DC\u304B\u3089\u5916\u3059\u30BF\u30B9\u30AF\uFF08\u672A\u56DE\u7B54\u306E\u8CEA\u554F\u3042\u308A\uFF09: ${[...excludeKeys].sort().join(", ")}`)}const taskStatusSnapshot=parseTaskStatusSnapshot(prefetchSection);if(taskStatusSnapshot===null){log.log(" \u26A0\uFE0F prefetch \u306B OPS_TASK_STATUS \u30DE\u30FC\u30AB\u30FC\u304C\u3042\u308A\u307E\u305B\u3093");log.log(" \u300C\u524D\u56DE\u304C\u72B6\u614B\u3092\u9032\
|
|
187
|
-
\u3081\u305F\u5834\u5408\u306E\u518D\u6295\u5165\u6291\u6B62\u300D\u306F**\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u7121\u52B9**\u3067\u3059\uFF08\u6295\u5165\u306F\u6B62\u3081\u307E\u305B\u3093\uFF09")}else if(!taskStatusSnapshot.complete){log.log(" \u26A0\uFE0F \u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u4E00\u90E8\u53D6\u5F97\u3067\u304D\u3066\u3044\u307E\u305B\u3093\uFF08complete=0\uFF09\u2192 \u518D\u6295\u5165\u6291\u6B62\u306F\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u7121\u52B9\u3067\u3059")}
|
|
189
|
+
\u3081\u305F\uFF0F\u518D\u958B\u6761\u4EF6\u4ED8\u304D\u3067\u636E\u3048\u7F6E\u3044\u305F\u5834\u5408\u306E\u518D\u6295\u5165\u6291\u6B62\u300D\u306F**\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u7121\u52B9**\u3067\u3059\uFF08\u6295\u5165\u306F\u6B62\u3081\u307E\u305B\u3093\uFF09")}else if(!taskStatusSnapshot.complete){log.log(" \u26A0\uFE0F \u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u4E00\u90E8\u53D6\u5F97\u3067\u304D\u3066\u3044\u307E\u305B\u3093\uFF08complete=0\uFF09\u2192 \u518D\u6295\u5165\u6291\u6B62\u306F\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u7121\u52B9\u3067\u3059")}
|
|
188
190
|
const outcomeReports=await fetchOutcomeReports(this.deps.api,config.outcomeSkills??[]);for(const w of outcomeStreakWarnings(outcomeReports))log.log(` \u26A0\uFE0F ${w}`);const outcomeSection=renderOutcomeSection(outcomeReports);const blocks=await this.snapshotDynamicBlocks(taskStatusSnapshot);let planSession;try{planSession=openPlanSession(path4.join(config.stateDir,"plan-submit"),[...fileSkillNames([path4.join(config.workspace,".claude","commands"),...process.env.CLAUDE_CONFIG_DIR?[path4.join(
|
|
189
191
|
process.env.CLAUDE_CONFIG_DIR,"commands")]:[],path4.join(os2.homedir(),".claude","commands")]),...this.skills.names()],blocks)}catch(err){log.log(` \u26A0\uFE0F \u8A08\u753B\u306E\u63D0\u51FA\u53E3\u3092\u6E96\u5099\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09\u3002\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u306F\u5FDC\u7B54\u306E\u6587\u7AE0\u304B\u3089\u8A08\u753B\u3092\u53D6\u308A\u51FA\u3057\u307E\u3059`);planSession=NO_PLAN_SESSION}let result;let submitted;let rejectedSubmissions=[];
|
|
190
192
|
try{result=await this.engine.run({prompt:buildPlanPrompt(config,planSkill,scheduleSection,prefetchSection,outcomeSection),promptPrefix:this.cyclePreflightSection,logFile:planLogFile,timeoutSec:config.planTimeoutSec,cwd:config.workspace,skill:normalizeSkillName(planSkill.replace(/^\//,"")),...Object.keys(planSession.env).length>0?{extraEnv:planSession.env}:{},validate:output=>planSession.submission()!==null||extractPlanJson(output)!==null});submitted=planSession.submission();rejectedSubmissions=planSession.
|
|
@@ -202,10 +204,12 @@ if(pendingKeysResolved)return pendingKeys;pendingKeysResolved=true;const pending
|
|
|
202
204
|
pending);return pendingKeys};let exclusiveQueued=null;let exclusiveFetched=false;const exclusiveInflight=async()=>{if(exclusiveFetched)return exclusiveQueued;exclusiveFetched=true;const pending=await pendingOnce();if(pending===null&&processing===null){log.log(" \u26A0\uFE0F \u30AD\u30E5\u30FC/\u5B9F\u884C\u4E2D\u30A2\u30A4\u30C6\u30E0\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F");log.log(" \u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C\u30AC\u30FC\u30C9\u306F**\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u7121\u52B9**\u3067\u3059\uFF08\u6295\u5165\u306F\u6B62\u3081\u307E\u305B\u3093\uFF09");
|
|
203
205
|
return null}if(pending===null||processing===null){log.log(` \u26A0\uFE0F ${pending===null?"pending":"processing"} \u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u305D\u306E\u3076\u3093\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C\u30AC\u30FC\u30C9\u306F\u7DE9\u307F\u307E\u3059`)}const entries=exclusiveInflightEntries([{status:"processing",items:processing??[]},{status:"pending",items:pending??[]}],{staleHours:inflightStaleHours(
|
|
204
206
|
config.aiTimeoutSec)});const exclusive=entries.filter(e=>config.ai.isExclusiveSkill(e.skill));if(exclusive.length>0){log.log(" \u65E2\u306B\u30AD\u30E5\u30FC/\u5B9F\u884C\u4E2D\u306E\u6392\u4ED6\u30B9\u30AD\u30EB\uFF08\u3053\u306E\u8A08\u753B\u304B\u3089\u306F\u9664\u5916\u3057\u307E\u3059\uFF09:");for(const entry of exclusive)log.log(` - ${formatExclusiveEntry(entry)}`)}exclusiveQueued=new Set(exclusive.map(e=>e.skill));return exclusiveQueued};let recentCandidates=null;let recentFetched=false;
|
|
205
|
-
let resultFetchBudget=5;const
|
|
206
|
-
recentCandidates=buildRecentCandidateIndex(items);log.log(` \u76F4\u8FD1${RECENT_ADVANCE_WINDOW_HOURS}\u6642\u9593\u306B\u540C\u4E00\u30BF\u30B9\u30AF\u3092\u6271\u3063\u305F\u5B9F\u884C: ${recentCandidates.size}\u4EF6`)}}if(recentCandidates===null)return null;
|
|
207
|
-
getItem(itemId);if(!res.ok){log.log(` \u26A0\uFE0F \u76F4\u8FD1\u30A2\u30A4\u30C6\u30E0\u306E\u7D50\u679C\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(res)}\uFF09\u3002${taskKey} \u306E\u518D\u6295\u5165\u306F\u6291\u6B62\u3057\u307E\u305B\u3093`);return null}
|
|
208
|
-
|
|
207
|
+
let resultFetchBudget=5;const recentCandidateFor=async(taskKey,skill)=>{if(!recentFetched){recentFetched=true;const items=await this.deps.api.completedSince(windowStartMicros(new Date));if(items===null){log.log(" \u26A0\uFE0F \u76F4\u8FD1\u306E\u5B9F\u884C\u53F0\u5E33\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F");log.log(" \u300C\u524D\u56DE\u304C\u72B6\u614B\u3092\u9032\u3081\u305F\uFF0F\u518D\u958B\u6761\u4EF6\u4ED8\u304D\u3067\u636E\u3048\u7F6E\u3044\u305F\u5834\u5408\u306E\u518D\u6295\u5165\u6291\u6B62\u300D\u306F**\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u7121\u52B9**\u3067\u3059\uFF08\u6295\u5165\u306F\u6B62\u3081\u307E\u305B\u3093\uFF09")}else{
|
|
208
|
+
recentCandidates=buildRecentCandidateIndex(items);log.log(` \u76F4\u8FD1${RECENT_ADVANCE_WINDOW_HOURS}\u6642\u9593\u306B\u540C\u4E00\u30BF\u30B9\u30AF\u3092\u6271\u3063\u305F\u5B9F\u884C: ${recentCandidates.size}\u4EF6`)}}if(recentCandidates===null)return null;return findRecentCandidate(recentCandidates,taskKey,skill)};const resultCache=new Map;const fetchResultFor=taskKey=>async itemId=>{if(resultCache.has(itemId))return resultCache.get(itemId)??null;if(resultFetchBudget<=0)return null;resultFetchBudget-=
|
|
209
|
+
1;const res=await this.deps.api.getItem(itemId);if(!res.ok){log.log(` \u26A0\uFE0F \u76F4\u8FD1\u30A2\u30A4\u30C6\u30E0\u306E\u7D50\u679C\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(res)}\uFF09\u3002${taskKey} \u306E\u518D\u6295\u5165\u306F\u6291\u6B62\u3057\u307E\u305B\u3093`);return null}const result2=res.json?.item?.result??null;resultCache.set(itemId,result2);return result2};const recentAdvanceFor=async(taskKey,skill)=>{if(config.operations.advancingOutcomes.
|
|
210
|
+
size===0)return null;const candidate=await recentCandidateFor(taskKey,skill);if(candidate===null)return null;return resolveRecentAdvance(candidate,fetchResultFor(taskKey),config.operations.advancingOutcomes)};const resumeHoldFor=async(taskKey,skill)=>{const candidate=await recentCandidateFor(taskKey,skill);if(candidate===null)return null;return resolveResumeHold(candidate,fetchResultFor(taskKey),config.operations.advancingOutcomes)};const prHeadCache=new Map;const prHeadLookup=async(repo,n)=>{const key=`${repo}\
|
|
211
|
+
#${n}`;if(prHeadCache.has(key))return prHeadCache.get(key)??null;const sha=await(this.deps.prHeadLookup??lookupPrHead)(repo,n);if(sha===null)log.log(` \u26A0\uFE0F ${key} \u306E head \u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08pr_head \u6761\u4EF6\u306F\u6210\u7ACB\u6271\u3044\uFF1D\u6291\u6B62\u3057\u307E\u305B\u3093\uFF09`);prHeadCache.set(key,sha);return sha};const exclusiveEnqueued=new Set;const enqueuedTaskKeys=new Set;let enqueued=0;const dropped=[];let lockLostMidway=false;
|
|
212
|
+
for(const[stepIndex,step]of plan.steps.entries()){const item=stepToItem(step,config.ai);if(!item){dropped.push({skill:String(step.skill??""),task_key:null,reason:"step \u306E\u5F62\u304C\u4E0D\u6B63"});continue}if(!/^[a-z][a-z0-9-]*$/.test(step.skill)){log.log(` \u26A0\uFE0F \u30B9\u30AD\u30EB\u540D\u304C\u60F3\u5B9A\u306E\u6587\u5B57\u7A2E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF08skill='${step.skill}'\uFF09\u3002\u6642\u9593\u5E2F\u30B2\u30FC\u30C8\u3068\u30AB\u30C6\u30B4\u30EA\u5224\u5B9A\u304C\u52B9\u304D\u307E\u305B\u3093`)}
|
|
209
213
|
const placeholder=placeholderTaskKey(step.args??"");if(placeholder!==null){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u30BF\u30B9\u30AF\u30AD\u30FC\u304C\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\uFF09: ${step.skill} \u2014 args \u306B '${placeholder}' \u304C\u6B8B\u3063\u3066\u3044\u307E\u3059 | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"\u30BF\u30B9\u30AF\u30AD\u30FC\u304C\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0"});continue}const stepSkill=normalizeSkillName(
|
|
210
214
|
step.skill??"");if(stepSkill==="release-deploy"&&releaseDeployDrop!==null){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08release-deploy \u306E\u7A7A\u632F\u308A\u9632\u6B62\uFF09: ${releaseDeployDrop} | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"release-deploy \u306E\u7A7A\u632F\u308A\u9632\u6B62"});continue}const zeroTargetReason=zeroTargetDrops.get(stepSkill);if(zeroTargetReason!==void 0){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u5BFE\u8C610\u4EF6\uFF09: ${step.
|
|
211
215
|
skill} \u2014 ${zeroTargetReason} | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"\u5BFE\u8C610\u4EF6"});continue}if(item.task_key&&inflightKeys.has(item.task_key)){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u4ED6\u30E9\u30F3\u30CA\u30FC\u304C\u51E6\u7406\u4E2D\uFF09: ${step.skill} \u2014 ${item.task_key} \u306F\u4ED6\u30E9\u30F3\u30CA\u30FC\u304C\u51E6\u7406\u4E2D | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,
|
|
@@ -213,18 +217,19 @@ reason:"\u4ED6\u30E9\u30F3\u30CA\u30FC\u304C\u51E6\u7406\u4E2D"});continue}if(it
|
|
|
213
217
|
enqueuedTaskKeys,item.task_key);if(duplicateKey!==null){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u540C\u4E00\u8A08\u753B\u5185\u306E\u91CD\u8907\u30AD\u30FC\uFF09: ${step.skill} \u2014 ${duplicateKey} | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"\u540C\u4E00\u8A08\u753B\u5185\u306E\u91CD\u8907\u30AD\u30FC"});continue}const excludedKey=excludedKeyInArgs(step.args??"",excludeKeys);if(excludedKey!==null){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u4EBA\u306B\u30DC\u30FC\u30EB\u304C\u3042\u308B\uFF09: ${step.
|
|
214
218
|
skill} \u2014 ${excludedKey} \u306F\u672A\u56DE\u7B54\u306E\u8CEA\u554F\u3092\u6301\u3064\u4EBA\u9593\u5F85\u3061\u30BF\u30B9\u30AF | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"\u4EBA\u306B\u30DC\u30FC\u30EB\u304C\u3042\u308B"});continue}if(item.task_key){const advance=await recentAdvanceFor(item.task_key,step.skill);if(advance!==null){const gate2=shouldSuppressForStatus(advance,taskStatusSnapshot,config.operations.advancingOutcomes);if(gate2.suppress){log.
|
|
215
219
|
log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u524D\u56DE\u304C\u72B6\u614B\u3092\u9032\u3081\u305F\uFF09: ${step.skill} \u2014 ${item.task_key} \u306F ${formatRecentAdvance(advance)} | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"\u524D\u56DE\u304C\u72B6\u614B\u3092\u9032\u3081\u305F"});continue}log.log(` \u6291\u6B62\u3092\u898B\u9001\u308A: ${step.skill} \u2014 ${item.task_key} \u306F ${formatRecentAdvance(advance)} \u3060\u304C ${gate2.reason}\
|
|
216
|
-
| ${item.label}`)}}const
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
has(exclusiveSkill)){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C\uFF09: ${step.skill} \u2014 \
|
|
220
|
-
|
|
221
|
-
:
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
\
|
|
227
|
-
break}
|
|
220
|
+
| ${item.label}`)}}if(item.task_key){const hold=await resumeHoldFor(item.task_key,step.skill);if(hold!==null){const gate2=await shouldSuppressForResume(hold,taskStatusSnapshot,prHeadLookup);if(gate2.suppress){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u518D\u958B\u6761\u4EF6\u304C\u672A\u6210\u7ACB\uFF09: ${step.skill} \u2014 ${item.task_key} \u306F ${formatResumeHold(hold)} | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"\u518D\u958B\u6761\u4EF6\u304C\u672A\u6210\u7ACB"});
|
|
221
|
+
continue}log.log(` \u636E\u3048\u7F6E\u304D\u306E\u518D\u958B: ${step.skill} \u2014 ${item.task_key} \u306F ${formatResumeHold(hold)} \u3060\u304C ${gate2.reason} | ${item.label}`)}}const gate=await this.schedule.gateAllows(step.skill);if(!gate.allowed){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u6642\u9593\u5E2F\u30B2\u30FC\u30C8\uFF09: ${step.skill} \u2014 ${gate.reason} | ${item.label}`);dropped.push({skill:step.skill,task_key:item.task_key||null,reason:"\u6642\u9593\u5E2F\u30B2\u30FC\u30C8"});
|
|
222
|
+
continue}if(this.planLock.isLost()){log.log(` \u26D4 \u30A8\u30F3\u30AD\u30E5\u30FC\u4E2D\u306B\u8A08\u753B\u30ED\u30C3\u30AF\u3092\u5931\u3044\u307E\u3057\u305F\uFF08reason=${this.planLock.lostReasonText()}\uFF09\u2192 \u3053\u3053\u3067\u4E2D\u6B62\u3057\u307E\u3059\uFF08\u6295\u5165\u6E08\u307F: ${enqueued}\u4EF6\uFF09`);lockLostMidway=true;for(const rest of plan.steps.slice(stepIndex)){dropped.push({skill:String(rest.skill??""),task_key:stepToItem(rest,config.ai)?.task_key||null,reason:"\u8A08\u753B\u30ED\
|
|
223
|
+
\u30C3\u30AF\u55AA\u5931\u3067\u672A\u51E6\u7406"})}break}const exclusiveSkill=config.ai.isExclusiveSkill(step.skill)?normalizeSkillName(step.skill):null;if(exclusiveSkill!==null){if(exclusiveEnqueued.has(exclusiveSkill)){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C\uFF09: ${step.skill} \u2014 \u540C\u3058\u8A08\u753B\u306B\u65E2\u306B1\u4EF6\u3042\u308A\u307E\u3059 | ${item.label}`);dropped.push({skill:step.skill,
|
|
224
|
+
task_key:item.task_key||null,reason:"\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C"});continue}const queuedSkills=await exclusiveInflight();if(queuedSkills?.has(exclusiveSkill)){log.log(` \u30A8\u30F3\u30AD\u30E5\u30FC\u6291\u6B62\uFF08\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C\uFF09: ${step.skill} \u2014 \u65E2\u306B\u30AD\u30E5\u30FC/\u5B9F\u884C\u4E2D\u306E\u305F\u3081\u7A4D\u307F\u307E\u305B\u3093 | ${item.label}`);dropped.push({skill:step.
|
|
225
|
+
skill,task_key:item.task_key||null,reason:"\u5916\u90E8\u6295\u7A3F\u30B9\u30AD\u30EB\u306E\u540C\u6642\u5B9F\u884C"});continue}}const{itemId,detail}=await createItem(this.deps.api,item);if(itemId){enqueued+=1;enqueuedSteps.push({skill:step.skill,task_key:item.task_key||null,label:item.label,item_id:itemId});if(exclusiveSkill!==null)exclusiveEnqueued.add(exclusiveSkill);if(item.task_key)enqueuedTaskKeys.add(item.task_key)}else{dropped.push({skill:step.skill,task_key:item.task_key||null,reason:`\u6295\
|
|
226
|
+
\u5165\u30A8\u30E9\u30FC: ${String(detail).slice(0,200)}`});log.log(` \u8B66\u544A: \u30A8\u30F3\u30AD\u30E5\u30FC\u5931\u6557: ${item.label} \u2014 ${detail}`)}}log.log(`\u8A08\u753B\u5B8C\u4E86: ${enqueued} \u30A2\u30A4\u30C6\u30E0\u3092\u30AD\u30E5\u30FC\u306B\u8FFD\u52A0\u3057\u307E\u3057\u305F`);const summary={source,empty:false,planned:plan.steps.length,enqueued,dropped,unchecked,...lockLostMidway?{aborted:true}:{}};recordResult(summary);setRecord("enqueued",summary);return"ok"}async snapshotDynamicBlocks(taskStatus){
|
|
227
|
+
const{config,log,api}=this.deps;try{const advancing=config.operations.advancingOutcomes;const[processing,pending,recent]=await Promise.all([api.processingSnapshot(),api.pendingSnapshot(),advancing.size>0?api.completedSince(windowStartMicros(new Date)):Promise.resolve(null)]);const blocks=await buildDynamicBlocks({processing,pending,recent,taskStatus,advancing,staleHours:inflightStaleHours(config.aiTimeoutSec)});const missing=unavailableChecks(blocks);if(missing.length>0){log.log(` \u26A0\uFE0F \u63D0\u51FA\u6642\u306B\u306F\u52B9\u304B\u306A\u3044\
|
|
228
|
+
\u691C\u67FB\u304C\u3042\u308A\u307E\u3059\uFF08${missing.join("\u30FB")}\u30FB\u5B9F\u6E2C\u304B\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u5199\u3057\u3092\u53D6\u308C\u305A\uFF09\u3002\u30A8\u30F3\u30AD\u30E5\u30FC\u6642\u306E\u691C\u67FB\u306F\u52B9\u304D\u307E\u3059`)}return blocks}catch(err){log.log(` \u26A0\uFE0F \u63D0\u51FA\u6642\u306E\u691C\u67FB\u306B\u4F7F\u3046\u5B9F\u6E2C\u3092\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${err.message}\uFF09\u3002\u30A8\u30F3\u30AD\u30E5\u30FC\u6642\u306E\u691C\u67FB\u306F\u52B9\u304D\u307E\u3059`);
|
|
229
|
+
return null}}async runDequeueLoop(cycle){const{config,log,api,runner}=this.deps;log.separator();log.log("Phase 2: \u30AD\u30E5\u30FC\u304B\u3089\u30C7\u30AD\u30E5\u30FC\u3057\u3066\u9806\u6B21\u5B9F\u884C...");log.separator();let completed=0;let failed=0;let unexecuted=0;let unexecutedNeedsHuman=false;let stepNum=0;let contendedRetry=0;let undetermined=false;let stop=false;this.nothingClaimableBacklog=false;dequeue:for(;;){if(this.draining){log.log("\u30C9\u30EC\u30A4\u30F3\u8981\u6C42\u3092\u53D7\u3051\u3066\u3044\u308B\u305F\u3081\u3001\u65B0\u3057\u3044\u30A2\u30A4\u30C6\u30E0\u306F\u53D6\u5F97\u3057\u307E\u305B\u3093\u3002Phase 2 \u3092\u7D42\u4E86\u3057\u307E\u3059\u3002");
|
|
230
|
+
stop=true;break}const claimed=await this.claimOne();if(claimed.kind==="undetermined"){undetermined=true;break}if(claimed.kind==="contended"){contendedRetry+=1;if(contendedRetry>=config.contendedMax){log.log(` \u26A0\uFE0F contended \u304C ${contendedRetry} \u56DE\u7D9A\u304D\u307E\u3057\u305F\u3002\u3053\u306E\u30B5\u30A4\u30AF\u30EB\u3067\u306E\u53D6\u5F97\u3092\u8AE6\u3081\u307E\u3059\uFF08\u4ED6\u6A5F\u304C\u51E6\u7406\u3092\u7D9A\u3051\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u9AD8\u3044\uFF09`);
|
|
231
|
+
undetermined=true;break}log.log(` \u2139\uFE0F \u4ED6\u306E\u30E9\u30F3\u30CA\u30FC\u304C\u5148\u306B\u53D6\u5F97\u3057\u307E\u3057\u305F\uFF08contended\u30FB${contendedRetry}\u56DE\u76EE\uFF09\u30023\u79D2\u5F8C\u306B\u518D\u8A66\u884C\u3057\u307E\u3059`);await this.sleep(3e3);continue}contendedRetry=0;this.nothingClaimableBacklog=claimed.kind==="filtered"&&claimed.by.length>0&&claimed.by.every(b=>b==="prerequisite"||b==="platform");if(claimed.kind==="empty"){log.log("\u30AD\u30E5\u30FC\u306Bpending\u30A2\u30A4\u30C6\u30E0\u304C\u3042\u308A\u307E\u305B\u3093\u3002Pha\
|
|
232
|
+
se 2 \u5B8C\u4E86\u3002");break}if(claimed.kind==="filtered"){const reasons=claimed.by.includes("platform")?claimed.by.includes("prerequisite")?"\u524D\u63D0\u672A\u5145\u8DB3\u30FB\u5225\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u5C02\u7528\u306E\u307F":"\u5225\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u5C02\u7528\u306E\u307F":"\u524D\u63D0\u672A\u5145\u8DB3\u306E\u307F";log.log(this.nothingClaimableBacklog?`\u3053\u306E\u6A5F\u4F53\u304C\u53D6\u308C\u308B pending \u30A2\u30A4\u30C6\u30E0\u304C\u3042\u308A\u307E\u305B\u3093\uFF08${reasons}\
|
|
228
233
|
\uFF09\u3002Phase 2 \u5B8C\u4E86\u3002\u6B21\u30B5\u30A4\u30AF\u30EB\u306F\u8A08\u753B\u3057\u307E\u3059\u3002`:"\u3053\u306E\u6A5F\u4F53\u304C\u53D6\u308C\u308B pending \u30A2\u30A4\u30C6\u30E0\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u7406\u7531\u3092\u5224\u5B9A\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u6B21\u30B5\u30A4\u30AF\u30EB\u3082\u8A08\u753B\u3057\u307E\u305B\u3093\uFF09\u3002Phase 2 \u5B8C\u4E86\u3002");break}const item=claimed.item;const itemId=item.item_id??"";const prompt=(item.
|
|
229
234
|
prompt??"").trim();const label=item.label??"";if(!itemId||!prompt){log.log(`\u30C7\u30AD\u30E5\u30FC\u7D50\u679C\u306E\u30D1\u30FC\u30B9\u306B\u5931\u6557\u3057\u307E\u3057\u305F: ${JSON.stringify(item).slice(0,200)}`);break}stepNum+=1;log.separator();log.log(`[${stepNum}] ${label}`);log.log(` item_id: ${itemId}`);await runner.beat("dequeue",itemId);log.log(` prompt: ${prompt}`);log.separator();const stopMatch=/^\/stop(?:\s+(\d+))?$/.exec(prompt);if(stopMatch){const res=await api.update(itemId,
|
|
230
235
|
{status:"completed"},config.runId);if(res.status===409){log.log(" \u26A0\uFE0F /stop \u30A2\u30A4\u30C6\u30E0\u306F\u65E2\u306B\u5225\u306E\u30E9\u30F3\u30CA\u30FC\u304C\u4FDD\u6301\u3057\u3066\u3044\u307E\u3059\uFF08409\uFF09\u3002\u3053\u3061\u3089\u3067\u306F\u8A18\u9332\u3057\u307E\u305B\u3093")}else if(!res.ok){log.log(` \u26D4 /stop \u30A2\u30A4\u30C6\u30E0\u3092 completed \u306B\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${describeError(res)}\uFF09`);log.log(" \u3053\u306E\u30A2\u30A4\u30C6\u30E0\u306F\u56DE\u53CE\u5F8C\u306B\
|
|
@@ -293,7 +298,7 @@ handlers.onRestart({from:decision.from,to:decision.to})};const timer=setInterval
|
|
|
293
298
|
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
299
|
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
300
|
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-
|
|
301
|
+
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-4NT4OC7J.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
302
|
const profile=resolveProfile(opts.profile);let creds;try{creds=new AuthSession(profile.name,profile.apiUrl).loadOrThrow()}catch(err){process.stderr.write(`${err.message}
|
|
298
303
|
`);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
304
|
message}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
3
|
import{composeDocument,metaLine}from"./chunk-C7MO3RHJ.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{DOMAIN_KNOWLEDGES_PATH,DOMAIN_KNOWLEDGE_SLUG_RE}from"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,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-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var KB_LABEL="\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9";var DOC_LABEL="\u8A18\u4E8B";var ACCESS_LEVELS=["tenant","authenticated","public"];var KB_STATUSES=["draft","active","archived"];var KB_NAME_MAX_CHARS=255;var KB_DESCRIPTION_MAX_CHARS=2e3;var DOC_TITLE_MAX_CHARS=255;var DOC_SUMMARY_MAX_CHARS=2e3;var DOC_TAGS_MAX=30;var DOC_TAG_MAX_CHARS=64;var PATH_SEGMENT_RE=/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/;var PATH_MAX_BYTES=512;var DOC_BODY_MAX_BYTES=300*1024;var DOC_DEPTH_MAX=20;var KB_LIST_COLUMNS=[
|
|
5
|
-
"id","slug","name","status","access_level","updated_at"];var KB_GET_COLUMNS=["id","slug","name","status","access_level","description","revision","updated_at","updated_by"];var DOC_LIST_COLUMNS=["path","title","depth","size_bytes","updated_at"];var DOC_GET_COLUMNS=["path","title","summary","tags","size_bytes","updated_at","updated_by"];var KB_ARG="<KB>";var KB_ARG_HELP="<KB> \u306F\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u306E ID \u304B slug \u3067\u3059\uFF08twp knowledge list \u306E id / slug \u5217\uFF09\u3002";
|
|
4
|
+
import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var KB_LABEL="\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9";var DOC_LABEL="\u8A18\u4E8B";var ACCESS_LEVELS=["tenant","authenticated","public"];var KB_STATUSES=["draft","active","archived"];var KB_NAME_MAX_CHARS=255;var KB_DESCRIPTION_MAX_CHARS=2e3;var DOC_TITLE_MAX_CHARS=255;var DOC_SUMMARY_MAX_CHARS=2e3;var DOC_TAGS_MAX=30;var DOC_TAG_MAX_CHARS=64;var PATH_SEGMENT_RE=/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/;var PATH_MAX_BYTES=512;var DOC_BODY_MAX_BYTES=300*1024;var DOC_DEPTH_MAX=20;var KB_LIST_COLUMNS=[
|
|
5
|
+
"id","slug","name","status","access_level","updated_at"];var KB_GET_COLUMNS=["id","slug","name","status","access_level","description","revision","updated_at","updated_by"];var DOC_LIST_COLUMNS=["path","title","depth","size_bytes","updated_at"];var DOC_GET_COLUMNS=["path","title","summary","tags","revision","size_bytes","updated_at","updated_by"];var KB_ARG="<KB>";var KB_ARG_HELP="<KB> \u306F\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u306E ID \u304B slug \u3067\u3059\uFF08twp knowledge list \u306E id / slug \u5217\uFF09\u3002";
|
|
6
6
|
function positional(input,names,usage){const values=input.args.map(arg=>arg.trim());if(values.length<names.length){throw new UsageError(`${names[values.length]}\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usage)}if(values.length>names.length){throw new UsageError(`\u4F4D\u7F6E\u5F15\u6570\u304C\u591A\u3059\u304E\u307E\u3059: ${input.args.slice(names.length).join(" ")}`,usage)}return values}function oneOf(input,flag,allowed){const raw=nonEmpty(input.flags,flag);if(raw===void 0)return void 0;
|
|
7
7
|
const value=raw.trim();if(!allowed.includes(value)){throw new UsageError(`${flag} \u306B\u6307\u5B9A\u3067\u304D\u306A\u3044\u5024\u3067\u3059: ${raw}`,`\u6307\u5B9A\u3067\u304D\u308B\u5024: ${allowed.join(" / ")}`)}return value}function boundedFlag(input,flag,max){const raw=input.flags.get(flag);if(raw===void 0)return void 0;if(raw.trim()==="")throw new UsageError(`${flag} \u304C\u7A7A\u3067\u3059`,`${flag} \u306B\u5024\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);const count=charCount(
|
|
8
8
|
raw);if(count>max)throw new UsageError(`${flag} \u304C\u9577\u3059\u304E\u307E\u3059\uFF08${count} \u6587\u5B57\u30FB\u4E0A\u9650 ${max} \u6587\u5B57\uFF09`,`\u30B5\u30FC\u30D0\u306E\u4E0A\u9650\u304C${max}\u6587\u5B57\u3067\u3059\u3002`);return raw}function clearable(input,flag,clearFlag,max){const clear=input.flags.has(clearFlag);if(clear&&input.flags.has(flag))throw new UsageError(`${flag} \u3068 ${clearFlag} \u306F\u4F75\u7528\u3067\u304D\u307E\u305B\u3093`,`\u7A7A\u306B\u3059\u308B\u306A\u3089 ${clearFlag}\
|
|
@@ -40,22 +40,28 @@ usage:"twp knowledge delete <KB> --yes",description:`${KB_ARG_HELP}
|
|
|
40
40
|
\u9001\u308B\u524D\u306B KB \u3068\u8A18\u4E8B\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3057\u3001\u6D88\u3048\u308B KB \u306E\u540D\u524D\u3068\u8A18\u4E8B\u306E\u4EF6\u6570\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\u3002
|
|
41
41
|
\u914D\u4E0B\u306E\u8A18\u4E8B\u3082\u307E\u3068\u3081\u3066\u524A\u9664\u3055\u308C\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306E\u51E6\u7406\u30FB\u53D6\u308A\u6D88\u305B\u307E\u305B\u3093\uFF09\u3002`,destructive:true,flags:[],async prepare(input,ctx){positional(input,[KB_ARG],"twp knowledge delete <KB> --yes");return resolveKnowledge(input,ctx,"twp knowledge delete <KB> --yes")},preview:previewKbDelete,plan:input=>({method:"DELETE",path:kbPath(input)}),summarize:body=>acknowledgement(body,`${KB_LABEL}\
|
|
42
42
|
\u306E\u524A\u9664`),raw:body=>acknowledgement(body,`${KB_LABEL}\u306E\u524A\u9664`)};var DOC_LIST_USAGE="twp knowledge doc list <KB> [--prefix <\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA>] [--depth <\u6DF1\u3055>]";var DOC_GET_USAGE="twp knowledge doc get <KB> <\u30D1\u30B9>";var DOC_CREATE_USAGE="twp knowledge doc create <KB> <\u30D1\u30B9> --title <\u4EF6\u540D> --content-file <\u30D1\u30B9|-> [--summary <\u8981\u7D04>] [--tag <\u30BF\u30B0>]...";var DOC_UPDATE_USAGE="twp knowledge doc update <KB> \
|
|
43
|
-
<\u30D1\u30B9> [--title <\u4EF6\u540D>] [--content-file <\u30D1\u30B9|->] [--summary <\u8981\u7D04>|--clear-summary] [--tag <\u30BF\u30B0>]... [--clear-tags]";var DOC_MOVE_USAGE="twp knowledge doc move <KB> <\u79FB\u52D5\u5143\u306E\u30D1\u30B9> <\u79FB\u52D5\u5148\u306E\u30D1\u30B9>";var DOC_DELETE_USAGE="twp knowledge doc delete <KB> <\u30D1\u30B9> --yes";var DOC_PATH_HELP=`${KB_ARG_HELP}
|
|
43
|
+
<\u30D1\u30B9> [--title <\u4EF6\u540D>] [--content-file <\u30D1\u30B9|->] [--summary <\u8981\u7D04>|--clear-summary] [--tag <\u30BF\u30B0>]... [--clear-tags] [--if-revision <\u7248>]";var DOC_MOVE_USAGE="twp knowledge doc move <KB> <\u79FB\u52D5\u5143\u306E\u30D1\u30B9> <\u79FB\u52D5\u5148\u306E\u30D1\u30B9> [--if-revision <\u7248>]";var DOC_DELETE_USAGE="twp knowledge doc delete <KB> <\u30D1\u30B9> --yes [--if-revision <\u7248>]";var DOC_PATH_HELP=`${KB_ARG_HELP}
|
|
44
44
|
<\u30D1\u30B9> \u306F\u8A18\u4E8B\u306E\u30D1\u30B9\u3067\u3059\uFF08\u4F8B: /guide/setup.md\u3002\u5148\u982D\u306E / \u306F\u7701\u3051\u307E\u3059\uFF09\u3002\u5404\u968E\u5C64\u306F\u82F1\u6570\u5B57\u3067\u59CB\u307E\u308A\u3001\u82F1\u6570\u5B57\u30FB. _ - \u3060\u3051\u3092\u4F7F\u3048\u307E\u3059\u3002`;var DOC_WRITE_HELP=`\u672C\u6587\u306F --content-file \u306E\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u304B\u3089\u8AAD\u307F\u3001Markdown \u306E\u307E\u307E\u52A0\u5DE5\u305B\u305A\u306B\u9001\u308A\u307E\u3059\uFF08\u5148\u982D\u306E BOM \u3060\u3051\u843D\u3068\u3057\u307E\u3059\uFF09\u3002
|
|
45
45
|
\u30B5\u30FC\u30D0\u306F\u4FDD\u5B58\u6642\u306B\u672C\u6587\u306E\u524D\u5F8C\u306E\u7A7A\u767D\uFF08\u672B\u5C3E\u306E\u6539\u884C\u3092\u542B\u3080\uFF09\u3092\u843D\u3068\u3057\u307E\u3059\u3002
|
|
46
46
|
\u672C\u6587\u306E\u4E0A\u9650\u306F ${DOC_BODY_MAX_BYTES/1024}KB\uFF08\u30D0\u30A4\u30C8\uFF09\u3067\u3059\u3002\u8A18\u4E8B\u306E\u4F5C\u6210\u30FB\u7DE8\u96C6\u306F\u30C9\u30E1\u30A4\u30F3\u77E5\u8B58\u306E member \u4EE5\u4E0A\u3067\u3067\u304D\u307E\u3059\u3002`;var DOC_CONTENT_FLAG={name:"--content-file",summary:"\u672C\u6587\uFF08Markdown\uFF09\u3092\u8AAD\u3080\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9|->"};var DOC_TAG_FLAG={
|
|
47
|
-
name:"--tag",summary:`\u30BF\u30B0\uFF08\u8907\u6570\u56DE\u53EF\u30FB${DOC_TAG_MAX_CHARS}\u6587\u5B57\u4EE5\u5185\u30FB${DOC_TAGS_MAX}\u500B\u307E\u3067\uFF09`,takesValue:true,placeholder:"<\u30BF\u30B0>",repeatable:true};
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
name:"--tag",summary:`\u30BF\u30B0\uFF08\u8907\u6570\u56DE\u53EF\u30FB${DOC_TAG_MAX_CHARS}\u6587\u5B57\u4EE5\u5185\u30FB${DOC_TAGS_MAX}\u500B\u307E\u3067\uFF09`,takesValue:true,placeholder:"<\u30BF\u30B0>",repeatable:true};var IF_REVISION="--if-revision";function ifRevision(input){const raw=input.flags.get(IF_REVISION);if(raw===void 0)return void 0;const n=Number.parseInt(raw,10);if(!Number.isInteger(n)||n<0||String(n)!==raw.trim()){throw new UsageError(`${IF_REVISION} \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024\
|
|
48
|
+
: ${raw}\uFF09`,"twp knowledge doc get \u306E revision\uFF08\u7248\uFF09\u3092\u6E21\u3057\u307E\u3059\u3002")}return n}function ifRevisionFlag(verb){return{name:IF_REVISION,summary:`\u4E00\u81F4\u3059\u308B\u3068\u304D\u3060\u3051${verb}\u8A18\u4E8B\u306E\u7248\uFF08twp knowledge doc get \u306E revision\u3002\u9001\u308B\u524D\u3068\u30B5\u30FC\u30D0\u306E\u66F8\u304D\u8FBC\u307F\u6642\u306B\u7167\u5408\u3057\u3001\u9055\u3048\u3070\u4F55\u3082\u5909\u3048\u306A\u3044\uFF09`,takesValue:true,placeholder:"\
|
|
49
|
+
<\u7248>"}}function ifRevisionHelp(verb){return`${IF_REVISION} <\u7248> \u3092\u4ED8\u3051\u308B\u3068\u3001\u8A18\u4E8B\u306E\u7248\uFF08twp knowledge doc get \u306E revision\uFF09\u304C\u4E00\u81F4\u3059\u308B\u3068\u304D\u3060\u3051${verb}\u3002\u9055\u3048\u3070\u4F55\u3082\u5909\u3048\u305A\u306B\u7D42\u4E86\u30B3\u30FC\u30C9 3 \u3067\u7D42\u308F\u308A\u307E\u3059\uFF08\u9001\u308B\u524D\u306E\u78BA\u8A8D\u3067\u5206\u304B\u308C\u3070\u9001\u3089\u305A\u3001\u9001\u3063\u305F\u5F8C\u306B\u4ED6\u306E\u66F4\u65B0\u304C\u5165\u3063\u3066\u3044\u308C\u3070\u30B5\u30FC\u30D0\u304C 409 \u3067\u65AD\u308A\u307E\u3059\uFF09\u3002
|
|
50
|
+
\u305D\u306E\u3068\u304D\u306F twp knowledge doc get \u3067\u6700\u65B0\u306E\u5185\u5BB9\u3068 revision \u3092\u8AAD\u307F\u76F4\u3057\u3066\u304B\u3089\u4ED8\u3051\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u7248\u306E\u5C0E\u5165\u524D\u306B\u4F5C\u3089\u308C\u305F\u8A18\u4E8B\u306E\u7248\u306F 0 \u3067\u3059\u3002`}async function checkRevision(input,ctx,path){const doc=docFrom(await ctx.send({method:"GET",path:`${kbPath(input)}/docs/show`,query:{path}}));const expected=ifRevision(input);
|
|
51
|
+
if(expected===void 0)return{doc,notes:[]};const current=doc["revision"]??0;if(current!==expected){throw new ApiRejectedError(`${DOC_LABEL} ${path} \u306E\u7248\u304C ${String(current)} \u3067\u3059\uFF08${IF_REVISION} ${expected}\uFF09\u3002\u4ED6\u306E\u66F4\u65B0\u3068\u7AF6\u5408\u3057\u305F\u306E\u3067\u4F55\u3082\u9001\u3063\u3066\u3044\u307E\u305B\u3093\u3002twp knowledge doc get \u3067\u6700\u65B0\u306E\u5185\u5BB9\u3092\u8AAD\u307F\u3001\u53CD\u6620\u3057\u76F4\u3057\u3066\u304B\u3089 ${IF_REVISION}\
|
|
52
|
+
\u3092\u4ED8\u3051\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return{doc,notes:[`\u7248 ${expected} \u3092\u78BA\u8A8D\u3057\u307E\u3057\u305F\uFF08\u9001\u4FE1\u6642\u306B\u3082\u30B5\u30FC\u30D0\u304C\u7167\u5408\u3057\u3001\u9593\u306B\u4ED6\u306E\u66F4\u65B0\u304C\u3042\u308C\u3070 409 \u3067\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002`]}}async function docContent(input,usage){const content=await readBody(input,{flag:"--content",fileFlag:"--content-file",label:"\u8A18\u4E8B\u306E\u672C\u6587",
|
|
53
|
+
maxChars:DOC_BODY_MAX_BYTES,usage});if(content!==void 0){const bytes=Buffer.byteLength(content,"utf8");if(bytes>DOC_BODY_MAX_BYTES){throw new UsageError(`\u8A18\u4E8B\u306E\u672C\u6587\u304C\u5927\u304D\u3059\u304E\u307E\u3059\uFF08${bytes} \u30D0\u30A4\u30C8\u30FB\u4E0A\u9650 ${DOC_BODY_MAX_BYTES} \u30D0\u30A4\u30C8\uFF09`,"\u8A18\u4E8B\u3092\u5206\u5272\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30B5\u30FC\u30D0\u306E\u4E0A\u9650\u304C 300KB \u3067\u3059\uFF09\u3002")}}return content}function kbAndPath(input,usage){
|
|
54
|
+
const[,path]=positional(input,[KB_ARG,"<\u30D1\u30B9>"],usage);return normalizeDocPath(path)}var docList={name:"list",summary:`${KB_LABEL}\u306E${DOC_LABEL}\u3092\u4E00\u89A7\u3059\u308B\uFF08\u672C\u6587\u306F\u542B\u307E\u306A\u3044\uFF09`,usage:DOC_LIST_USAGE,description:`${KB_ARG_HELP}
|
|
50
55
|
--prefix \u3067\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u914D\u4E0B\uFF08\u4F8B: /guide\uFF09\u306B\u3001--depth \u3067\u30EB\u30FC\u30C8\u304B\u3089\u306E\u6DF1\u3055\uFF08/a.md \u304C 1\uFF09\u306B\u7D5E\u308A\u307E\u3059\u3002
|
|
51
56
|
\u30B5\u30FC\u30D0\u306F1\u56DE\u306B 5,000 \u4EF6\u307E\u3067\u3057\u304B\u8AAD\u307E\u306A\u3044\u305F\u3081\u3001\u305D\u308C\u3092\u8D85\u3048\u308B KB \u3067\u306F\u6253\u3061\u5207\u308A\u3092 stderr \u3067\u77E5\u3089\u305B\u307E\u3059\uFF080\u4EF6\u3067\u3082\u300C\u7121\u3044\u300D\u3068\u306F\u9650\u308A\u307E\u305B\u3093\uFF09\u3002
|
|
52
57
|
--output table / tsv \u306F\u8981\u7D04\u5217\uFF08${DOC_LIST_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002`,flags:[{name:"--prefix",summary:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u7D5E\u308B\uFF08\u4F8B: /guide\uFF09",takesValue:true,placeholder:"<\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA>"},{name:"--depth",summary:`\u30EB\u30FC\u30C8\u304B\u3089\u306E\u6DF1\u3055\u3067\u7D5E\u308B\uFF081\u301C${DOC_DEPTH_MAX}\uFF09`,takesValue:true,placeholder:"<\u6DF1\u3055>"}],async prepare(input,ctx){positional(
|
|
53
58
|
input,[KB_ARG],DOC_LIST_USAGE);docPrefix(input);docDepth(input);return resolveKnowledge(input,ctx,DOC_LIST_USAGE)},plan:input=>({method:"GET",path:`${kbPath(input)}/docs`,query:{prefix:docPrefix(input),depth:docDepth(input)}}),summarize:body=>rows(body,"docs",`${DOC_LABEL}\u4E00\u89A7`).map(row=>pick(row,DOC_LIST_COLUMNS)),raw:body=>rows(body,"docs",`${DOC_LABEL}\u4E00\u89A7`),notes:body=>isRecord(body)&&body["truncated"]===true?[`\u30B5\u30FC\u30D0\u304C\u8AAD\u3080\u4EF6\u6570\u306E\u4E0A\u9650\uFF08${String(
|
|
54
|
-
body["limit"]??"?")} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001\u3053\u306E\u4E00\u89A7\u306B\u306F\u51FA\u3066\u3053\u306A\u3044${DOC_LABEL}\u304C\u3042\u308A\u307E\u3059\u3002`]:[]};function docDocument(body){const doc=docFrom(body);return composeDocument(doc["title"],[...metaLine("\u30D1\u30B9",doc["path"]),...metaLine("\u8981\u7D04",doc["summary"]),...metaLine("\u30BF\u30B0",doc["tags"]),...metaLine("\
|
|
55
|
-
|
|
59
|
+
body["limit"]??"?")} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001\u3053\u306E\u4E00\u89A7\u306B\u306F\u51FA\u3066\u3053\u306A\u3044${DOC_LABEL}\u304C\u3042\u308A\u307E\u3059\u3002`]:[]};function docDocument(body){const doc=docFrom(body);return composeDocument(doc["title"],[...metaLine("\u30D1\u30B9",doc["path"]),...metaLine("\u8981\u7D04",doc["summary"]),...metaLine("\u30BF\u30B0",doc["tags"]),...metaLine("\u7248",doc["revision"]),...metaLine("\u66F4\u65B0",doc["updated_at"]),...metaLine(
|
|
60
|
+
"\u66F4\u65B0\u8005",doc["updated_by"])],[{body:typeof doc["body_md"]==="string"?doc["body_md"].replace(/\s+$/,""):""}])}var docGet={name:"get",summary:`${DOC_LABEL}1\u4EF6\u3092\u8868\u793A\u3059\u308B\uFF08--output text \u3067\u672C\u6587\u306E Markdown \u3092\u8AAD\u3080\uFF09`,usage:DOC_GET_USAGE,description:`${DOC_PATH_HELP}
|
|
56
61
|
--output text \u306F\u4EF6\u540D\u30FB\u30E1\u30BF\u60C5\u5831\u306E\u3042\u3068\u306B\u672C\u6587\uFF08Markdown\uFF09\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\u3002--output json \u306F\u30B5\u30FC\u30D0\u306E\u539F\u6587\u306E\u307E\u307E\u3067\u3059\u3002
|
|
57
|
-
--output table / tsv \u306F\u8981\u7D04\u5217\uFF08${DOC_GET_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
|
|
58
|
-
|
|
62
|
+
--output table / tsv \u306F\u8981\u7D04\u5217\uFF08${DOC_GET_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
|
|
63
|
+
\u3069\u306E\u51FA\u529B\u5F62\u5F0F\u3067\u3082\u7248\uFF08revision\uFF09\u3092\u51FA\u3059\u306E\u3067\u3001\u7D9A\u3051\u3066\u66F8\u304D\u8FBC\u3080\u3068\u304D\u306F doc update / move / delete \u306E --if-revision <\u7248> \u306B\u6E21\u305B\u307E\u3059\u3002`,flags:[],async prepare(input,ctx){kbAndPath(input,DOC_GET_USAGE);return resolveKnowledge(input,ctx,DOC_GET_USAGE)},plan:input=>({method:"GET",path:`${kbPath(input)}/docs/show`,query:{path:kbAndPath(input,DOC_GET_USAGE)}}),summarize:body=>pick(
|
|
64
|
+
docFrom(body),DOC_GET_COLUMNS),raw:docFrom,document:docDocument};var docCreate={name:"create",summary:`${DOC_LABEL}\u3092\u4F5C\u6210\u3059\u308B\uFF08\u672C\u6587\u306F\u30D5\u30A1\u30A4\u30EB\u304B\u3089\uFF09`,usage:DOC_CREATE_USAGE,description:`${DOC_PATH_HELP}
|
|
59
65
|
${DOC_WRITE_HELP}
|
|
60
66
|
\u540C\u3058\u30D1\u30B9\u306E\u8A18\u4E8B\u304C\u65E2\u306B\u3042\u308C\u3070\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF08\u66F8\u304D\u63DB\u3048\u306F twp knowledge doc update\uFF09\u3002
|
|
61
67
|
|
|
@@ -66,14 +72,23 @@ return withResolved(await resolveKnowledge(input,ctx,DOC_CREATE_USAGE),{content}
|
|
|
66
72
|
var docUpdate={name:"update",summary:`${DOC_LABEL}\u3092\u66F4\u65B0\u3059\u308B\uFF08\u4EF6\u540D\u30FB\u672C\u6587\u30FB\u8981\u7D04\u30FB\u30BF\u30B0\uFF09`,usage:DOC_UPDATE_USAGE,description:`${DOC_PATH_HELP}
|
|
67
73
|
${DOC_WRITE_HELP}
|
|
68
74
|
\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\u3002--tag \u306F\u30BF\u30B0\u3092\u307E\u308B\u3054\u3068\u7F6E\u304D\u63DB\u3048\u3001--clear-tags \u306F\u30BF\u30B0\u3092\u3001--clear-summary \u306F\u8981\u7D04\u3092\u7A7A\u306B\u3057\u307E\u3059\u3002
|
|
69
|
-
|
|
70
|
-
{
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
\
|
|
76
|
-
|
|
77
|
-
\
|
|
78
|
-
|
|
75
|
+
${ifRevisionHelp("\u66F4\u65B0\u3057\u307E\u3059")}
|
|
76
|
+
${IF_REVISION} \u3092\u4ED8\u3051\u306A\u304F\u3066\u3082\u3001\u30B5\u30FC\u30D0\u306F\u8AAD\u3093\u3060\u7248\u3092\u6761\u4EF6\u306B\u66F8\u304F\u306E\u3067\u3001\u8AAD\u3093\u3067\u304B\u3089\u66F8\u304F\u307E\u3067\u306E\u9593\u306B\u5165\u3063\u305F\u4ED6\u306E\u66F4\u65B0\u306F\u6D88\u3057\u307E\u305B\u3093\uFF08\u305D\u306E\u3068\u304D\u3082 409\uFF09\u3002
|
|
77
|
+
\u30D1\u30B9\u306E\u5909\u66F4\u306F twp knowledge doc move \u3067\u3059\u3002
|
|
78
|
+
|
|
79
|
+
\u4F8B:
|
|
80
|
+
twp knowledge doc get internal-guide /guide/setup.md --output json # revision \u3092\u8AAD\u3080
|
|
81
|
+
twp knowledge doc update internal-guide /guide/setup.md --content-file setup.md --if-revision 3`,flags:[{name:"--title",summary:`\u4EF6\u540D\uFF08${DOC_TITLE_MAX_CHARS}\u6587\u5B57\u4EE5\u5185\uFF09`,takesValue:true,placeholder:"<\u4EF6\u540D>"},DOC_CONTENT_FLAG,{name:"--summary",summary:`\u8981\u7D04\uFF08${DOC_SUMMARY_MAX_CHARS}\u6587\u5B57\u4EE5\u5185\uFF09`,takesValue:true,placeholder:"<\u8981\u7D04>"},{name:"--clear-summary",summary:"\u8981\u7D04\u3092\u7A7A\u306B\u3059\u308B",takesValue:false},
|
|
82
|
+
DOC_TAG_FLAG,{name:"--clear-tags",summary:"\u30BF\u30B0\u3092\u7A7A\u306B\u3059\u308B",takesValue:false},ifRevisionFlag("\u66F4\u65B0\u3059\u308B")],async prepare(input,ctx){kbAndPath(input,DOC_UPDATE_USAGE);ifRevision(input);const title=boundedFlag(input,"--title",DOC_TITLE_MAX_CHARS);const summary=clearable(input,"--summary","--clear-summary",DOC_SUMMARY_MAX_CHARS);const tags=docTags(input);const content=await docContent(input,DOC_UPDATE_USAGE);if(title===void 0&&summary===void 0&&tags===void 0&&
|
|
83
|
+
content===void 0){throw new UsageError("\u66F4\u65B0\u3059\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093",`--title / --content-file / --summary / --clear-summary / --tag / --clear-tags \u306E\u3069\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
84
|
+
${DOC_UPDATE_USAGE}`)}const resolved=await resolveKnowledge(input,ctx,DOC_UPDATE_USAGE);return content===void 0?resolved:withResolved(resolved,{content})},plan(input){const title=boundedFlag(input,"--title",DOC_TITLE_MAX_CHARS);const summary=clearable(input,"--summary","--clear-summary",DOC_SUMMARY_MAX_CHARS);const tags=docTags(input);const content=input.resolved?.["content"];const expected=ifRevision(input);return{method:"PUT",path:`${kbPath(input)}/docs`,body:{path:kbAndPath(input,DOC_UPDATE_USAGE),
|
|
85
|
+
...title!==void 0?{title}:{},...content!==void 0?{body_md:content}:{},...summary!==void 0?{summary}:{},...tags!==void 0?{tags}:{},...expected!==void 0?{expected_revision:expected}:{}}}},async preview(input,ctx){if(ifRevision(input)===void 0)return{notes:[],warnings:[]};return{notes:(await checkRevision(input,ctx,kbAndPath(input,DOC_UPDATE_USAGE))).notes,warnings:[]}},summarize:body=>pick(docFrom(body),DOC_GET_COLUMNS),raw:docFrom};function movePaths(input){const[,from,to]=positional(input,[KB_ARG,
|
|
86
|
+
"<\u79FB\u52D5\u5143\u306E\u30D1\u30B9>","<\u79FB\u52D5\u5148\u306E\u30D1\u30B9>"],DOC_MOVE_USAGE);const fromPath=normalizeDocPath(from,"\u79FB\u52D5\u5143\u306E\u30D1\u30B9");return{from:fromPath,to:normalizeDocPath(to,"\u79FB\u52D5\u5148\u306E\u30D1\u30B9")}}var docMove={name:"move",summary:`${DOC_LABEL}\u306E\u30D1\u30B9\u3092\u5909\u3048\u308B\uFF08\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u5909\u66F4\u30FB\u30EA\u30CD\u30FC\u30E0\uFF09`,usage:DOC_MOVE_USAGE,description:`${DOC_PATH_HELP}
|
|
87
|
+
\u79FB\u52D5\u5148\u306B\u540C\u3058\u30D1\u30B9\u306E\u8A18\u4E8B\u304C\u65E2\u306B\u3042\u308C\u3070\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\u3002
|
|
88
|
+
${ifRevisionHelp("\u79FB\u52D5\u3057\u307E\u3059\uFF08\u7167\u5408\u3059\u308B\u306E\u306F\u79FB\u52D5\u5143\u306E\u7248\u3067\u3059\uFF09")}`,flags:[ifRevisionFlag("\u79FB\u52D5\u3059\u308B\uFF08\u79FB\u52D5\u5143\u306E\uFF09")],async prepare(input,ctx){movePaths(input);ifRevision(input);return resolveKnowledge(input,ctx,DOC_MOVE_USAGE)},plan(input){const{from,to}=movePaths(input);const expected=ifRevision(input);return{method:"POST",path:`${kbPath(input)}/docs/move`,body:{from_path:from,to_path:to,
|
|
89
|
+
...expected!==void 0?{expected_revision:expected}:{}}}},async preview(input,ctx){if(ifRevision(input)===void 0)return{notes:[],warnings:[]};return{notes:(await checkRevision(input,ctx,movePaths(input).from)).notes,warnings:[]}},summarize:body=>pick(docFrom(body),DOC_GET_COLUMNS),raw:docFrom};async function previewDocDelete(input,ctx){const path=kbAndPath(input,DOC_DELETE_USAGE);const{doc,notes}=await checkRevision(input,ctx,path);return{notes:[`\u524A\u9664\u3059\u308B${DOC_LABEL}: ${String(doc["\
|
|
90
|
+
title"]??"(\u4EF6\u540D\u306A\u3057)")}\uFF08${path}\uFF09`,...notes],warnings:[]}}var docDelete={name:"delete",summary:`${DOC_LABEL}\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09`,usage:DOC_DELETE_USAGE,description:`${DOC_PATH_HELP}
|
|
91
|
+
\u9001\u308B\u524D\u306B\u8A18\u4E8B\u3092\u53D6\u5F97\u3057\u3001\u6D88\u3048\u308B\u8A18\u4E8B\u306E\u4EF6\u540D\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\u3002
|
|
92
|
+
${ifRevisionHelp("\u524A\u9664\u3057\u307E\u3059")}`,destructive:true,flags:[ifRevisionFlag("\u524A\u9664\u3059\u308B")],async prepare(input,ctx){kbAndPath(input,DOC_DELETE_USAGE);ifRevision(input);return resolveKnowledge(input,ctx,DOC_DELETE_USAGE)},preview:previewDocDelete,plan:input=>({method:"DELETE",path:`${kbPath(input)}/docs`,query:{path:kbAndPath(input,DOC_DELETE_USAGE),expected_revision:ifRevision(input)}}),summarize:body=>acknowledgement(body,`${DOC_LABEL}\u306E\u524A\u9664`),raw:body=>acknowledgement(
|
|
93
|
+
body,`${DOC_LABEL}\u306E\u524A\u9664`)};var docResource={name:"doc",summary:`${KB_LABEL}\u306E${DOC_LABEL}\uFF08\u4E00\u89A7\u30FB\u672C\u6587\u3092\u8AAD\u3080\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u79FB\u52D5\u30FB\u524A\u9664\uFF09`,operations:[docList,docGet,docCreate,docUpdate,docMove,docDelete]};var knowledgeDomain={name:"knowledge",summary:"\u30C9\u30E1\u30A4\u30F3\u77E5\u8B58\uFF08\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u3068\u8A18\u4E8B\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 wiki \u306F twp wiki\uFF09",
|
|
79
94
|
operations:[kbList,kbGet,kbCreate,kbUpdate,kbDelete],subresources:[docResource]};export{knowledgeDomain,normalizeDocPath};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{checkOutTarget}from"./chunk-
|
|
3
|
+
import{checkOutTarget}from"./chunk-OBILH2O7.js";import"./chunk-JYASAM2R.js";import"./chunk-PO35MCYP.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import{contentTypeFor,inspectLocalFile}from"./chunk-WTYIFLVB.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import"./chunk-LDBYJPRD.js";import"./chunk-RMFLTSOV.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";
|
|
4
4
|
import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import{collapsesInUrlPath,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger,readEnvelopeCursor,shellQuote}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,
|
|
5
5
|
isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import"./chunk-PECIBNFD.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-MLRBDF44.js";import"./chunk-QQRJLH6B.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";
|
|
6
6
|
import"./chunk-VSJBJXZO.js";import crypto2 from"crypto";import fs2 from"fs";import path from"path";var SCOPE_PERSONAL="personal";var SCOPE_PROJECT="project";var UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var FORBIDDEN_NAME=/[/\\:*?"<>|]/;var NAME_MAX=255;var ROW_COLUMNS=["id","path","name","file_count","subfolder_count","parent_id","updated_at"];var TRASH_COLUMNS=["id","path","name","file_count","subfolder_count","parent_id","deleted_at"];function folderRows(raw){return raw.map(row=>{const id=row["id"];const name=row["name"];const parentId=row["parent_id"];if(typeof id!==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{NO_PLAN_SESSION,PLAN_DIR_ENV,PLAN_TOKEN_ENV,checkPlan,fileSkillNames,formatCheck,openPlanSession,runPlanSubmit}from"./chunk-
|
|
3
|
+
import{NO_PLAN_SESSION,PLAN_DIR_ENV,PLAN_TOKEN_ENV,checkPlan,fileSkillNames,formatCheck,openPlanSession,runPlanSubmit}from"./chunk-M6FZ62YR.js";import"./chunk-QGJYT4NH.js";import"./chunk-JUJSF5ZG.js";import"./chunk-RCUI6WWU.js";import"./chunk-XMPHGOW4.js";import"./chunk-VYDPW2YO.js";import"./chunk-TTST7UDR.js";import"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-O52RKZCC.js";import"./chunk-LDBYJPRD.js";
|
|
4
4
|
import"./chunk-RMFLTSOV.js";import"./chunk-II5RVJQN.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{NO_PLAN_SESSION,PLAN_DIR_ENV,PLAN_TOKEN_ENV,checkPlan,fileSkillNames,formatCheck,openPlanSession,runPlanSubmit};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{loadDomain}from"./chunk-
|
|
3
|
+
import{loadDomain}from"./chunk-JYASAM2R.js";import"./chunk-VSJBJXZO.js";export{loadDomain};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-
|
|
3
|
+
import{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain}from"./chunk-OBILH2O7.js";import"./chunk-JYASAM2R.js";import"./chunk-PO35MCYP.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-LDBYJPRD.js";import"./chunk-RX5HWI4L.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";
|
|
4
4
|
import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-PECIBNFD.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-MLRBDF44.js";import"./chunk-QQRJLH6B.js";import"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{CURATED_PAGING_VOCABULARY,buildPrepareContext,checkOutTarget,exitCodeFor,fetchAllPages,outputValue,reportError,requiresYes,resolvePaging,runDomain};
|