@tocca-systems/twp-cli 0.69.0 → 0.71.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 +20 -0
- package/README.md +51 -4
- package/dist/{agent-loop-6JO4PJRG.js → agent-loop-OW6ZMQKN.js} +30 -16
- package/dist/{ai-dispatch-IW5TJK5Y.js → ai-dispatch-YABGNMHQ.js} +1 -1
- package/dist/{api-command-WIMCS3VI.js → api-command-4HXHTIQT.js} +1 -1
- package/dist/{app-SAHITYJK.js → app-JCUJJQGB.js} +4 -4
- package/dist/{capacity-report-command-PBE73I43.js → capacity-report-command-ACWK2MR5.js} +1 -1
- package/dist/chunk-5KAWCLYN.js +16 -0
- package/dist/{chunk-X6L5LUC4.js → chunk-BRE7D5AY.js} +1 -1
- package/dist/chunk-D5EYI7S3.js +48 -0
- package/dist/chunk-DLY2IN3G.js +16 -0
- package/dist/{chunk-P6M2MCZJ.js → chunk-JA7HEJOU.js} +2 -2
- package/dist/{chunk-3EATJTPN.js → chunk-LUBON4AA.js} +8 -7
- package/dist/{chunk-6PAZUW73.js → chunk-MAAICW7T.js} +1 -1
- package/dist/{chunk-W2AIT5FJ.js → chunk-OREF2S43.js} +1 -1
- package/dist/{chunk-53D2WQQO.js → chunk-YUS4VPNA.js} +4 -4
- package/dist/cli.js +45 -10
- package/dist/{commands-TR3J5HXT.js → commands-HH2DW2QJ.js} +107 -97
- package/dist/{completion-UVQHRBDJ.js → completion-JDD3SNUO.js} +4 -4
- package/dist/{knowledge-4QPIGJEE.js → knowledge-6A3MCIRY.js} +78 -22
- package/dist/{media-TWRO65NT.js → media-FGEV2OI2.js} +1 -1
- package/dist/{plan-submit-T5KHXNGH.js → plan-submit-SRQJHV2X.js} +1 -1
- package/dist/{registry-WBDRVEUW.js → registry-DC75DVLY.js} +1 -1
- package/dist/{run-XZUJWTTZ.js → run-R5CU36O3.js} +1 -1
- package/dist/{schedule-command-2HCOGYJW.js → schedule-command-4UBCTNRI.js} +1 -1
- package/dist/schedule-def-command-OFCA5VH3.js +86 -0
- package/dist/search-OSV6TA6Q.js +29 -0
- package/dist/{server-settings-LJBDUOTV.js → server-settings-BGVJNHAV.js} +1 -1
- package/dist/server-skills-JEFNP63E.js +3 -0
- package/dist/settings-command-TEVH2MNY.js +43 -0
- package/dist/{task-O7K6725Y.js → task-AQSKV7VL.js} +1 -1
- package/package.json +1 -1
- package/dist/chunk-PVP3REVW.js +0 -15
- package/dist/chunk-SPZ3GBYC.js +0 -16
- package/dist/chunk-ZKS2F7C6.js +0 -42
- package/dist/search-GRAWP2LX.js +0 -26
- package/dist/server-skills-WC45Y62Y.js +0 -3
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{BUILTIN_COMMANDS,GLOBAL_FLAGS,TASK_LOOP_ACTIONS,VALUE_FLAGS}from"./chunk-
|
|
3
|
+
import{BUILTIN_COMMANDS,GLOBAL_FLAGS,TASK_LOOP_ACTIONS,VALUE_FLAGS}from"./chunk-D5EYI7S3.js";import"./chunk-2LOT54OO.js";import{API_TOKEN,DOMAIN_NAMES,HELP_TOKEN,isDomainName}from"./chunk-KDH3KWPO.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var EXTRA_TOP_LEVEL=[API_TOKEN,HELP_TOKEN,"completion","configure"];var COMPLETION_SHELLS=["bash","zsh","fish","powershell"];var TOP_LEVEL_FLAGS=["--help","--version","-p","--print","--profile","--mode","--permission-mode","--model","--allowed-tools","--disallowed-tools","--no-tui","--doctor"];var DOMAIN_GLOBAL_FLAGS=[...GLOBAL_FLAGS].filter(flag=>flag.startsWith("--"));function staticValues(flag,ctx){if(flag==="--output")return OUTPUT_FORMATS;if(flag==="--profile")return ctx.profileNames();return void 0}
|
|
4
4
|
function positionals(words,takesValue){const out=[];for(let i=0;i<words.length;i++){const word=words[i]??"";if(word==="--"){out.push(...words.slice(i+1));break}if(word.startsWith("-")){if(!word.includes("=")&&takesValue(word))i++;continue}out.push(word)}return out}function byPrefix(candidates,current){const seen=new Set;for(const candidate of candidates){if(candidate.startsWith(current))seen.add(candidate)}return[...seen]}function remainingFlags(flags,words){const used=new Set(words.filter(w=>w.
|
|
5
5
|
startsWith("--")).map(w=>w.split("=")[0]));return[...flags.filter(f=>f.repeatable===true||!used.has(f.name)).map(f=>f.name),...DOMAIN_GLOBAL_FLAGS.filter(f=>!used.has(f))]}async function complete(words,current,ctx){const previous=words[words.length-1];if(previous!==void 0&&previous.startsWith("--")&&!previous.includes("=")){const values=staticValues(previous,ctx);if(values!==void 0)return byPrefix(values,current)}const eq=current.indexOf("=");if(current.startsWith("--")&&eq>0){const flag=current.
|
|
6
6
|
slice(0,eq);const values=staticValues(flag,ctx);return values===void 0?[]:byPrefix(values.map(v=>`${flag}=${v}`),current)}const pos=positionals(words,flag=>VALUE_FLAGS.has(flag));const[first,second]=pos;if(first===void 0){if(current.startsWith("-"))return byPrefix([...TOP_LEVEL_FLAGS,...DOMAIN_GLOBAL_FLAGS],current);return byPrefix([...BUILTIN_COMMANDS,...DOMAIN_NAMES,...EXTRA_TOP_LEVEL],current)}if(first==="completion")return pos.length===1?byPrefix(COMPLETION_SHELLS,current):[];if(first==="con\
|
|
7
7
|
figure")return current.startsWith("-")?byPrefix(["--profile"],current):[];if(first===HELP_TOKEN)return pos.length===1?byPrefix([...DOMAIN_NAMES,API_TOKEN],current):[];if(first==="task-loop"){if(pos.length===1&&!current.startsWith("-"))return byPrefix(TASK_LOOP_ACTIONS,current);if(pos.length===2&&(second==="charter"||second==="skill")&&!current.startsWith("-")){const ops=["push","pull","history","diff","revert"];return byPrefix(second==="skill"?[...ops,"list","show","delete"]:ops,current)}if(pos.
|
|
8
|
-
length===2&&second==="plan"&&!current.startsWith("-"))return byPrefix(["submit"],current);if(pos.length===2&&second==="capacity"&&!current.startsWith("-"))return byPrefix(["report"],current);return[]}if(!isDomainName(first))return[];const domain=await ctx.loadDomain(first);const subresources=domain.subresources??[];if(second===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,
|
|
9
|
-
HELP_TOKEN],current)}const sub=subresources.find(resource=>resource.name===second);let operation;if(sub!==void 0){const third=pos[2];if(third===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...sub.operations.map(op=>op.name),HELP_TOKEN],current)}operation=sub.operations.find(op=>op.name===third)}else{operation=domain.operations.find(op=>op.name===
|
|
10
|
-
operation.flags,words),current)}function completionScript(shell){switch(shell){case"bash":return`# twp \u306E bash \u88DC\u5B8C\uFF08twp completion bash \u304C\u51FA\u529B\uFF09
|
|
8
|
+
length===2&&second==="settings"&&!current.startsWith("-"))return byPrefix(["push","pull"],current);if(pos.length===2&&second==="plan"&&!current.startsWith("-"))return byPrefix(["submit"],current);if(pos.length===2&&second==="capacity"&&!current.startsWith("-"))return byPrefix(["report"],current);return[]}if(!isDomainName(first))return[];const domain=await ctx.loadDomain(first);const subresources=domain.subresources??[];if(second===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,
|
|
9
|
+
current);return byPrefix([...domain.operations.map(op=>op.name),...subresources.map(sub2=>sub2.name),HELP_TOKEN],current)}const sub=subresources.find(resource=>resource.name===second);let operation;if(sub!==void 0){const third=pos[2];if(third===void 0){if(current.startsWith("-"))return byPrefix(DOMAIN_GLOBAL_FLAGS,current);return byPrefix([...sub.operations.map(op=>op.name),HELP_TOKEN],current)}operation=sub.operations.find(op=>op.name===third)}else{operation=domain.operations.find(op=>op.name===
|
|
10
|
+
second)}if(operation===void 0)return[];if(!current.startsWith("-"))return[];return byPrefix(remainingFlags(operation.flags,words),current)}function completionScript(shell){switch(shell){case"bash":return`# twp \u306E bash \u88DC\u5B8C\uFF08twp completion bash \u304C\u51FA\u529B\uFF09
|
|
11
11
|
# \u8AAD\u307F\u8FBC\u307F: eval "$(twp completion bash)" \uFF0F \u5E38\u7528: ~/.bashrc \u306B\u540C\u30581\u884C\u3092\u66F8\u304F
|
|
12
12
|
# \uFF08source <(...) \u306F macOS \u6A19\u6E96\u306E bash 3.2 \u3067\u8AAD\u307F\u8FBC\u307E\u308C\u306A\u3044\u306E\u3067\u4F7F\u308F\u306A\u3044\uFF09
|
|
13
13
|
# \u78BA\u5B9A\u6E08\u307F\u306E\u8A9E\u306F\u914D\u5217\u30B9\u30E9\u30A4\u30B9\u3067\u306F\u306A\u304F\u30EB\u30FC\u30D7\u3067\u96C6\u3081\u308B\uFF08macOS \u6A19\u6E96\u306E bash 3.2 \u3067\u3082\u540C\u3058\u306B\u52D5\u304B\u3059\u305F\u3081\uFF09
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{composeDocument,meetingContentToText,metaLine,noteContentToText,oneLine,wikiContentToText}from"./chunk-HPPIVCK3.js";import{dateFlag}from"./chunk-EXT4AIDF.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";
|
|
4
|
-
isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";
|
|
5
|
-
import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var WIKI_PATH="/api/v2/wiki";var NOTES_PATH="/api/v2/notes";var MEETINGS_PATH="/api/v2/meetings";var ROOT_PARENT="root";var WIKI_STATUSES=["draft","published"];var WIKI_CONTENT_FORMATS=["html","markdown"];var NOTE_STATUSES=["draft","published"];var NOTE_VISIBILITIES=["private","tenant","external","public"];var NOTE_SORTS=["manual","created_at","updated_at","view_count","
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
meeting_type","status","project_name","category_name","created_by_name","updated_at"];var TEXT_OUTPUT_HELP="--output text \u306F\u672C\u6587\u3092\u8AAD\u3080\u305F\u3081\u306E\u6587\u66F8\uFF08\u898B\u51FA\u3057\u30FB\u30E1\u30BF\u60C5\u5831\u30FB\u672C\u6587\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002HTML \u3068\u5171\u540C\u7DE8\u96C6\u30A8\u30C7\u30A3\u30BF\u306E JSON \u306F\n\u5E73\u6587\u3078\u5909\u63DB\u3057\u3001\u898B\u51FA\u3057\u30FB\u7B87\u6761\u66F8\u304D\u30FB\u30EA\u30F3\u30AF\u306F Markdown \u98A8\u306B\u6B8B\u3057\u307E\u3059\u3002--output json \u306F\u30B5\u30FC\u30D0\u306E\u539F\u6587\u306E\u307E\u307E\u3067\u3059\u3002";
|
|
3
|
+
import{buildDiffLines,diffStat}from"./chunk-VRBI2NPI.js";import{composeDocument,meetingContentToText,metaLine,noteContentToText,oneLine,wikiContentToText}from"./chunk-HPPIVCK3.js";import{dateFlag}from"./chunk-EXT4AIDF.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";
|
|
4
|
+
import"./chunk-HNG6MF26.js";import{ResolveError,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";
|
|
5
|
+
import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var WIKI_PATH="/api/v2/wiki";var WIKI_SUMMARY_FIELDS="summary";function withoutContent(page){const rest={...page};delete rest["content"];return rest}var NOTES_PATH="/api/v2/notes";var MEETINGS_PATH="/api/v2/meetings";var ROOT_PARENT="root";var WIKI_STATUSES=["draft","published"];var WIKI_CONTENT_FORMATS=["html","markdown"];var NOTE_STATUSES=["draft","published"];var NOTE_VISIBILITIES=["private","tenant","external","public"];var NOTE_SORTS=["manual","created_at","updated_at","view_count","comment\
|
|
6
|
+
_count","reaction_count"];var MEETING_STATUSES=["draft","published","archived"];var MEETING_TYPES=["regular","client","internal","retrospective","decision","one_on_one"];var MEETING_SORTS=["meeting_date","created_at","updated_at","title"];var SORT_ORDERS=["asc","desc"];var MEETING_TAGS_MAX=20;var MEETING_TAG_MAX_CHARS=50;var DATE_FLOOR="0000-01-01";var DATE_CEIL="9999-12-31";var WIKI_LIST_COLUMNS=["id","title","status","parent_page_id","updated_at","updated_by_name"];var WIKI_CHILD_COLUMNS=["id",
|
|
7
|
+
"title","status","child_count","updated_at","updated_by_name"];var WIKI_GET_COLUMNS=["id","title","status","content_format","parent_page_id","version","tags","updated_at","updated_by_name"];var NOTE_LIST_COLUMNS=["id","title","status","visibility","created_by_name","updated_at","comment_count","reaction_count"];var NOTE_GET_COLUMNS=["id","title","status","visibility","content_type","category_name","tags","created_by_name","updated_at","view_count"];var MEETING_LIST_COLUMNS=["id","meeting_date","\
|
|
8
|
+
title","meeting_type","status","project_name","created_by_name"];var MEETING_GET_COLUMNS=["id","title","meeting_date","meeting_type","status","project_name","category_name","created_by_name","updated_at"];var TEXT_OUTPUT_HELP="--output text \u306F\u672C\u6587\u3092\u8AAD\u3080\u305F\u3081\u306E\u6587\u66F8\uFF08\u898B\u51FA\u3057\u30FB\u30E1\u30BF\u60C5\u5831\u30FB\u672C\u6587\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002HTML \u3068\u5171\u540C\u7DE8\u96C6\u30A8\u30C7\u30A3\u30BF\u306E JSON \u306F\n\u5E73\u6587\u3078\u5909\u63DB\u3057\u3001\u898B\u51FA\u3057\u30FB\u7B87\u6761\u66F8\u304D\u30FB\u30EA\u30F3\u30AF\u306F Markdown \u98A8\u306B\u6B8B\u3057\u307E\u3059\u3002--output json \u306F\u30B5\u30FC\u30D0\u306E\u539F\u6587\u306E\u307E\u307E\u3067\u3059\u3002";
|
|
9
9
|
function noArgs(input,command){if(input.args.length>0){throw new UsageError(`${command} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`${command} help`)}}function singleId(input,command,label,where){const[raw,...rest]=input.args;const id=raw?.trim()??"";if(id==="")throw new UsageError(`${label}\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,`${command} help`);if(rest.length>0)throw new UsageError(`${command} \u304C\u53D7\u3051\u53D6\u308C\u308B${label}\
|
|
10
10
|
ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,`${command} help`);if(!isSafePathSegment(id))throw new UsageError(`${label}\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${id}`,`${label}\u306E ID \u306F ${where} \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`);return id}function oneOf(input,flag,allowed){const raw=nonEmpty(input.flags,flag);if(raw===void 0)return void 0;const value=raw.trim();if(!allowed.includes(value)){throw new UsageError(
|
|
11
11
|
`${flag} \u306B\u6307\u5B9A\u3067\u304D\u306A\u3044\u5024\u3067\u3059: ${raw}`,`\u6307\u5B9A\u3067\u304D\u308B\u5024: ${allowed.join(" / ")}`)}return value}function pageLimit(input){const limit=positiveInteger(input.flags,"--limit");if(limit!==void 0&&limit>500){throw new UsageError(`--limit \u306F 1\u301C500 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${limit}`,"\u30B5\u30FC\u30D0\u306E\u4E0A\u9650\u304C500\u4EF6\u3067\u3059\u3002\u5168\u4EF6\u306F --all \u3067\u8FBF\u308C\u307E\u3059\u3002")}
|
|
@@ -13,30 +13,86 @@ return limit}function record(body,key,label){const row=isRecord(body)&&body["res
|
|
|
13
13
|
\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return paging.items(body)}function scanTruncatedNote(label){return body=>isRecord(body)&&body["scan_truncated"]===true?[`\u30B5\u30FC\u30D0\u304C\u8D70\u67FB\u3059\u308B\u4EF6\u6570\u306E\u4E0A\u9650\u306B\u9054\u3057\u305F\u305F\u3081\u3001\u3053\u306E${label}\u306B\u306F\u6761\u4EF6\u306B\u5408\u3046\u306E\u306B\u51FA\u3066\u3053\u306A\u3044\u884C\u304C\u3042\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002`]:[]}var WIKI_LABEL="wiki \u30DA\u30FC\u30B8";
|
|
14
14
|
var wikiPaging=envelopePaging({label:`${WIKI_LABEL}\u4E00\u89A7`});var PARENT_EXCLUSIVE=["--status","--tag","--keyword","--limit","--cursor","--all","--max-pages","--max-items"];function parentRef(input){const raw=nonEmpty(input.flags,"--parent");if(raw===void 0)return void 0;const parent=raw.trim();const clash=PARENT_EXCLUSIVE.filter(flag=>input.flags.has(flag));if(clash.length>0){throw new UsageError(`--parent \u306F ${clash.join(" / ")} \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093`,"--par\
|
|
15
15
|
ent \u306F\u30DA\u30FC\u30B8\u306E\u89AA\u5B50\u69CB\u9020\uFF08\u5168\u30DA\u30FC\u30B8\uFF09\u304B\u3089\u76F4\u4E0B\u306E\u5B50\u3092\u9078\u3076\u306E\u3067\u3001\u30B5\u30FC\u30D0\u5074\u306E\u7D5E\u308A\u8FBC\u307F\u30FB\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u4F7F\u3048\u307E\u305B\u3093\u3002")}if(parent!==ROOT_PARENT&&!isSafePathSegment(parent)){throw new UsageError(`\u89AA\u30DA\u30FC\u30B8\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${parent}`,"\u30DA\u30FC\u30B8\u306E ID \u306F twp wi\
|
|
16
|
-
ki list \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}return parent}function wikiListQuery(input){return{project_id:requireResolved(input,"project"),status:oneOf(input,"--status",WIKI_STATUSES),tag:nonEmpty(input.flags,"--tag"),keyword:nonEmpty(input.flags,"--keyword"),limit:pageLimit(input),cursor:nonEmpty(input.flags,"--cursor")}}function childrenOf(body,parent){const tree=isRecord(body)&&body["result"]===true?body["tree"]:void 0;if(!Array.isArray(
|
|
17
|
-
`${WIKI_LABEL}\u306E\u30C4\u30EA\u30FC\u306E\u5FDC\u7B54\u306B tree \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);const find=roots=>{const stack=[...roots];while(stack.length>0){const node=stack.pop();if(!isRecord(node))continue;const children2=Array.isArray(node["children"])?node["children"]:[];if(node["id"]===parent)return children2;for(const child of children2)stack.push(child)}
|
|
18
|
-
ROOT_PARENT?tree:find(tree);if(children===void 0){throw new ResolveError(`\u89AA\u30DA\u30FC\u30B8 ${parent} \u306F\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E wiki \u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\uFF08\u524A\u9664\u6E08\u307F\u30FB\u4ED6\u4EBA\u306E\u4E0B\u66F8\u304D\u30FB\u5225\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30DA\u30FC\u30B8\u306F\u898B\u3048\u307E\u305B\u3093\uFF09`,404)}return children.filter(isRecord).map(node=>{const{
|
|
19
|
-
...page,child_count:Array.isArray(grand)?grand.length:0}})}var wikiList={name:"list",summary:`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E${WIKI_LABEL}\u3092\u4E00\u89A7\u3059\u308B\uFF08--parent \u3067\u89AA\u30DA\u30FC\u30B8\u76F4\u4E0B\uFF09`,usage:"twp wiki list [--project <\u30B3\u30FC\u30C9|ID>] [--parent <\u30DA\u30FC\u30B8ID>|root] [--status <draft|published>] [--tag <\u30BF\u30B0>] [--keyword <\u8A9E>] [--all] [--limit <\u4EF6\u6570>]",description
|
|
20
|
-
\uFF08TWP_PROJECT \u7B49\uFF09\u3092\u4F7F\u3044\u307E\u3059\u3002
|
|
16
|
+
ki list \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}return parent}function wikiListQuery(input){return{project_id:requireResolved(input,"project"),status:oneOf(input,"--status",WIKI_STATUSES),tag:nonEmpty(input.flags,"--tag"),keyword:nonEmpty(input.flags,"--keyword"),limit:pageLimit(input),cursor:nonEmpty(input.flags,"--cursor"),fields:WIKI_SUMMARY_FIELDS}}function childrenOf(body,parent){const tree=isRecord(body)&&body["result"]===true?body["tree"]:void 0;if(!Array.isArray(
|
|
17
|
+
tree))throw new ApiResponseError(`${WIKI_LABEL}\u306E\u30C4\u30EA\u30FC\u306E\u5FDC\u7B54\u306B tree \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);const find=roots=>{const stack=[...roots];while(stack.length>0){const node=stack.pop();if(!isRecord(node))continue;const children2=Array.isArray(node["children"])?node["children"]:[];if(node["id"]===parent)return children2;for(const child of children2)stack.push(child)}
|
|
18
|
+
return void 0};const children=parent===ROOT_PARENT?tree:find(tree);if(children===void 0){throw new ResolveError(`\u89AA\u30DA\u30FC\u30B8 ${parent} \u306F\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E wiki \u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\uFF08\u524A\u9664\u6E08\u307F\u30FB\u4ED6\u4EBA\u306E\u4E0B\u66F8\u304D\u30FB\u5225\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30DA\u30FC\u30B8\u306F\u898B\u3048\u307E\u305B\u3093\uFF09`,404)}return children.filter(isRecord).map(node=>{const{
|
|
19
|
+
children:grand,...page}=node;return{...withoutContent(page),child_count:Array.isArray(grand)?grand.length:0}})}var wikiList={name:"list",summary:`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E${WIKI_LABEL}\u3092\u4E00\u89A7\u3059\u308B\uFF08--parent \u3067\u89AA\u30DA\u30FC\u30B8\u76F4\u4E0B\uFF09`,usage:"twp wiki list [--project <\u30B3\u30FC\u30C9|ID>] [--parent <\u30DA\u30FC\u30B8ID>|root] [--status <draft|published>] [--tag <\u30BF\u30B0>] [--keyword <\u8A9E>] [--all] [--limit <\u4EF6\u6570>]",description:`\
|
|
20
|
+
wiki \u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3054\u3068\u3067\u3059\u3002--project \u3092\u7701\u304F\u3068\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08TWP_PROJECT \u7B49\uFF09\u3092\u4F7F\u3044\u307E\u3059\u3002
|
|
21
21
|
--parent <\u30DA\u30FC\u30B8ID> \u306F\u305D\u306E\u30DA\u30FC\u30B8\u76F4\u4E0B\u306E\u5B50\u30DA\u30FC\u30B8\u3060\u3051\u3001--parent ${ROOT_PARENT} \u306F\u6700\u4E0A\u4F4D\u306E\u30DA\u30FC\u30B8\u3060\u3051\u3092\u51FA\u3057\u307E\u3059\uFF08\u5B6B\u306F child_count \u5217\u3067\u6570\u3060\u3051\u5206\u304B\u308A\u307E\u3059\uFF09\u3002
|
|
22
22
|
--parent \u306F\u30DA\u30FC\u30B8\u306E\u89AA\u5B50\u69CB\u9020\u30921\u56DE\u3067\u5F15\u3044\u3066\u9078\u3076\u306E\u3067\u3001${PARENT_EXCLUSIVE.join(" / ")} \u3068\u306F\u4F75\u7528\u3067\u304D\u307E\u305B\u3093\u3002
|
|
23
23
|
\u4E0B\u66F8\u304D\u306F\u4F5C\u6210\u8005\u3068 wiki \u306E\u7BA1\u7406\u8005\u306B\u3057\u304B\u898B\u3048\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306E\u5224\u5B9A\uFF09\u3002
|
|
24
24
|
|
|
25
|
-
--output json \u306F API \u304C\u8FD4\u3059\
|
|
25
|
+
--output json \u306F API \u304C\u8FD4\u3059\u30D5\u30A3\u30FC\u30EB\u30C9\u304B\u3089\u672C\u6587 content \u3092\u9664\u3044\u305F\u3082\u306E\u3067\u3001\u4EE3\u308F\u308A\u306B\u5192\u982D\u306E\u8981\u7D04 summary\uFF08\u5E73\u6587\u3067\u5148\u982D200\u6587\u5B57\uFF09\u3068\u672C\u6587\u306E\u6587\u5B57\u6570 content_length \u304C\u5165\u308A\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u304C\u5BFE\u5FDC\u3057\u3066\u3044\u308C\u3070\uFF09\u3002
|
|
26
26
|
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${WIKI_LIST_COLUMNS.join(" / ")}\u3002--parent \u3067\u306F parent_page_id \u306E\u4EE3\u308F\u308A\u306B child_count\uFF09\u3067\u3059\u3002\u672C\u6587\u306F twp wiki get \u3067\u8AAD\u3081\u307E\u3059\u3002
|
|
27
27
|
|
|
28
28
|
`+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u304B ID\u3002\u7701\u7565\u6642\u306F\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"},{name:"--parent",summary:`\u89AA\u30DA\u30FC\u30B8\u306E ID\uFF08\u76F4\u4E0B\u306E\u5B50\u3060\u3051\u3092\u51FA\u3059\uFF09\u3002${ROOT_PARENT} \u3067\u6700\u4E0A\u4F4D`,takesValue:true,placeholder:"<\u30DA\u30FC\u30B8ID>|root"},
|
|
29
29
|
{name:"--status",summary:`\u72B6\u614B\u3067\u7D5E\u308A\u8FBC\u3080\uFF08${WIKI_STATUSES.join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u72B6\u614B>"},{name:"--tag",summary:"\u30BF\u30B0\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u30BF\u30B0>"},{name:"--keyword",summary:"\u30AD\u30FC\u30EF\u30FC\u30C9\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u8A9E>"}],paging:wikiPaging,async prepare(input,ctx){noArgs(input,"twp wiki list");parentRef(input);oneOf(input,
|
|
30
|
-
"--status",WIKI_STATUSES);pageLimit(input);return withResolved(input,{project:await ctx.projectId(input.flags.get("--project"))})},plan(input){return parentRef(input)!==void 0?{method:"GET",path:`${WIKI_PATH}/tree`,query:
|
|
31
|
-
|
|
32
|
-
page["tags"]),...metaLine("\u89AA\u30DA\u30FC\u30B8",page["parent_page_id"]),...metaLine("\u7248",page["version"]),...metaLine("\u66F4\u65B0",page["updated_at"]),...metaLine("\u66F4\u65B0\u8005",page["updated_by_name"]),...metaLine("ID",page["id"])],[{body:wikiContentToText(page["content"],page["content_format"])}])}
|
|
33
|
-
|
|
30
|
+
"--status",WIKI_STATUSES);pageLimit(input);return withResolved(input,{project:await ctx.projectId(input.flags.get("--project"))})},plan(input){return parentRef(input)!==void 0?{method:"GET",path:`${WIKI_PATH}/tree`,query:wikiTreeQuery(input)}:{method:"GET",path:WIKI_PATH,query:wikiListQuery(input)}},narrow(body,input){const parent=parentRef(input);if(parent===void 0)return body;return{result:true,items:childrenOf(body,parent),has_more:false,next_cursor:null}},summarize:body=>{const rows=envelopeRows(
|
|
31
|
+
body,wikiPaging,`${WIKI_LABEL}\u4E00\u89A7`);const columns=rows.some(row=>isRecord(row)&&"child_count"in row)?WIKI_CHILD_COLUMNS:WIKI_LIST_COLUMNS;return rows.map(row=>pick(row,columns))},raw:body=>envelopeRows(body,wikiPaging,`${WIKI_LABEL}\u4E00\u89A7`).map(row=>isRecord(row)?withoutContent(row):row)};function wikiTreeQuery(input){return{project_id:requireResolved(input,"project"),fields:WIKI_SUMMARY_FIELDS}}function wikiDocument(body){const page=record(body,"page",WIKI_LABEL);return composeDocument(
|
|
32
|
+
page["title"],[...metaLine("\u72B6\u614B",page["status"]),...metaLine("\u5F62\u5F0F",page["content_format"]),...metaLine("\u30BF\u30B0",page["tags"]),...metaLine("\u89AA\u30DA\u30FC\u30B8",page["parent_page_id"]),...metaLine("\u7248",page["version"]),...metaLine("\u66F4\u65B0",page["updated_at"]),...metaLine("\u66F4\u65B0\u8005",page["updated_by_name"]),...metaLine("ID",page["id"])],[{body:wikiContentToText(page["content"],page["content_format"])}])}function isWikiPages(body){return isRecord(body)&&
|
|
33
|
+
Array.isArray(body["pages"])}function wikiGetIds(input){const ids=input.args.map(raw=>raw.trim());if(ids.length===0||ids.every(id=>id===""))throw new UsageError("\u30DA\u30FC\u30B8\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp wiki get help");for(const id of ids){if(!isSafePathSegment(id))throw new UsageError(`\u30DA\u30FC\u30B8\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${id===""?"(\u7A7A)":id}`,"\u30DA\u30FC\u30B8\u306E ID \u306F twp wiki list \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}
|
|
34
|
+
return ids}function wikiPagePlan(id){return{method:"GET",path:`${WIKI_PATH}/${encodeURIComponent(id)}`}}function isPageFailure(err){return err instanceof ApiError&&err.status!==401&&err.status!==429}async function wikiGetMany(input,ctx){const ids=wikiGetIds(input);if(ids.length===1)return ctx.send(wikiPagePlan(ids[0]));const pages=[];const failed=[];for(const id of ids){let body;try{body=await ctx.send(wikiPagePlan(id))}catch(err){if(!isPageFailure(err))throw err;failed.push({target:id,error:err});
|
|
35
|
+
continue}pages.push(record(body,"page",WIKI_LABEL))}const result={result:true,pages,failed};return result}var wikiGet={name:"get",summary:`${WIKI_LABEL}\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08ID \u3092\u4E26\u3079\u308B\u3068\u8907\u6570\u30DA\u30FC\u30B8\u30FB--output text \u3067\u672C\u6587\u3092\u8AAD\u3080\uFF09`,usage:"twp wiki get <\u30DA\u30FC\u30B8ID> [<\u30DA\u30FC\u30B8ID> ...]",description:`${TEXT_OUTPUT_HELP}
|
|
34
36
|
|
|
35
37
|
--output table / tsv \u306F\u8981\u7D04\u5217\uFF08${WIKI_GET_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
|
|
36
|
-
\u4ED6\u4EBA\u306E\u4E0B\u66F8\u304D\uFF08\u3068\u3001\u4ED6\u4EBA\u306E\u4E0B\u66F8\u304D\u306E\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u914D\u4E0B\u306E\u30DA\u30FC\u30B8\uFF09\u306F\u300C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u300D\u306B\u306A\u308A\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306E\u5224\u5B9A\uFF09\u3002
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
\u4ED6\u4EBA\u306E\u4E0B\u66F8\u304D\uFF08\u3068\u3001\u4ED6\u4EBA\u306E\u4E0B\u66F8\u304D\u306E\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u914D\u4E0B\u306E\u30DA\u30FC\u30B8\uFF09\u306F\u300C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u300D\u306B\u306A\u308A\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306E\u5224\u5B9A\uFF09\u3002
|
|
39
|
+
|
|
40
|
+
ID \u3092\u8907\u6570\u4E26\u3079\u308B\u30681\u4EF6\u305A\u3064\u53D6\u5F97\u3057\u307E\u3059\u3002--output json \u306F\u30DA\u30FC\u30B8\u306E\u914D\u5217\u3001--output text \u306F\u30DA\u30FC\u30B8\u3054\u3068\u306B
|
|
41
|
+
\u300C=== <n>/<\u4EF6\u6570> <\u4EF6\u540D>\uFF08ID: <ID>\uFF09 ===\u300D\u306E\u533A\u5207\u308A\u884C\u3092\u631F\u3093\u3067\u51FA\u3057\u307E\u3059\u3002
|
|
42
|
+
\u898B\u3064\u304B\u3089\u306A\u3044\u30FB\u6A29\u9650\u304C\u7121\u3044\u30DA\u30FC\u30B8\u304C\u3042\u3063\u3066\u3082\u4ED6\u306E\u30DA\u30FC\u30B8\u306F\u51FA\u3057\u3001\u53D6\u308C\u306A\u304B\u3063\u305F ID \u3068\u7406\u7531\u3092 stderr \u306B\u51FA\u3057\u3066
|
|
43
|
+
\u7D42\u4E86\u30B3\u30FC\u30C9 3\uFF08\u30B5\u30FC\u30D0\u306E 5xx \u304C\u6DF7\u3058\u308C\u3070 4\uFF09\u3067\u7D42\u308F\u308A\u307E\u3059\u3002401\u30FB429 \u306E\u3068\u304D\u306F\u9014\u4E2D\u3067\u6B62\u3081\u3066\u4F55\u3082\u51FA\u3057\u307E\u305B\u3093\u3002
|
|
44
|
+
|
|
45
|
+
\u4F8B:
|
|
46
|
+
twp wiki get <ID1> <ID2> <ID3> --output text`,flags:[],plan:input=>wikiPagePlan(wikiGetIds(input)[0]),plannedNotes:input=>{const ids=wikiGetIds(input);return ids.length>1?[`\u3053\u306E\u3042\u3068\u3001\u6B8B\u308A\u306E ${ids.length-1} \u4EF6\u3082 GET ${WIKI_PATH}/<\u30DA\u30FC\u30B8ID> \u30671\u4EF6\u305A\u3064\u53D6\u5F97\u3057\u307E\u3059\u3002`]:[]},execute:wikiGetMany,summarize:body=>isWikiPages(body)?body.pages.map(page=>pick(page,WIKI_GET_COLUMNS)):pick(record(body,"page",WIKI_LABEL),
|
|
47
|
+
WIKI_GET_COLUMNS),raw:body=>isWikiPages(body)?body.pages:record(body,"page",WIKI_LABEL),document:body=>{if(!isWikiPages(body))return wikiDocument(body);const total=body.pages.length;return body.pages.map((page,index)=>{const title=typeof page["title"]==="string"&&page["title"].trim()!==""?oneLine(page["title"]):"(\u7121\u984C)";return`=== ${index+1}/${total} ${title}\uFF08ID: ${String(page["id"]??"")}\uFF09 ===
|
|
48
|
+
|
|
49
|
+
${wikiDocument({result:true,page})}`}).join("\n")},failures:body=>isWikiPages(body)?body.failed:[]};var WIKI_VERSIONS_MAX=100;var WIKI_TAGS_MAX=50;var WIKI_TREE_COLUMNS=["depth","id","title","status","child_count","parent_page_id","updated_at"];var WIKI_VERSION_COLUMNS=["version","title","content_format","changed_by_name","changed_at"];var WIKI_BACKLINK_COLUMNS=["id","title","status","link_context","updated_at","updated_by_name"];var WIKI_LINKED_TASK_COLUMNS=["key","subject","status_id","task_id",
|
|
50
|
+
"project_id","created_by_name","created_at"];function pageIdAndRest(input,usage){const[raw,...rest]=input.args;const id=raw?.trim()??"";if(id==="")throw new UsageError("\u30DA\u30FC\u30B8\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);if(!isSafePathSegment(id))throw new UsageError(`\u30DA\u30FC\u30B8\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u5024\u3067\u3059: ${id}`,"\u30DA\u30FC\u30B8\u306E ID \u306F twp wiki list / twp wiki tree \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002");
|
|
51
|
+
return{id,rest}}function versionNumber(raw,usage){const value=raw.trim();const n=/^\d+$/.test(value)?Number(value):Number.NaN;if(!Number.isSafeInteger(n)||n<1)throw new UsageError(`\u7248\u306F 1 \u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`,usage);return n}function arrayField(body,key,label){const rows=isRecord(body)&&body["result"]===true?body[key]:void 0;if(!Array.isArray(rows))throw new ApiResponseError(`${label}\u306E\u5FDC\u7B54\u306B ${key} \
|
|
52
|
+
\u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return rows}function flattenTree(body){const tree=arrayField(body,"tree",`${WIKI_LABEL}\u306E\u30C4\u30EA\u30FC`);const out=[];const stack=[...tree].reverse().map(node=>({node,depth:0}));while(stack.length>0){const{node,depth}=stack.pop();if(!isRecord(node))continue;const children=Array.isArray(node["children"])?node["children"]:[];const page={...node,depth,child_count:children.
|
|
53
|
+
length};delete page["children"];delete page["content"];out.push(page);for(let i=children.length-1;i>=0;i--)stack.push({node:children[i],depth:depth+1})}return out}function treeDocument(body){const rows=flattenTree(body);if(rows.length===0)return"\uFF08wiki \u30DA\u30FC\u30B8\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\n";return`${rows.map(row=>{const title=typeof row["title"]==="string"&&row["title"].trim()!==""?oneLine(row["title"]):"(\u7121\u984C)";const children=typeof row["child_count"]==="num\
|
|
54
|
+
ber"&&row["child_count"]>0?`\u30FB\u5B50 ${row["child_count"]}`:"";return`${" ".repeat(Number(row["depth"])||0)}- ${title} [${String(row["status"]??"?")}${children}] ${String(row["id"])}`}).join("\n")}
|
|
55
|
+
`}var projectFlag={name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u304B ID\u3002\u7701\u7565\u6642\u306F\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var wikiTree={name:"tree",summary:`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E${WIKI_LABEL}\u306E\u89AA\u5B50\u69CB\u9020\u3092\u51FA\u3059\uFF08\u672C\u6587\u306F\u51FA\u3055\u306A\u3044\uFF09`,usage:"twp wiki tree [--project <\u30B3\u30FC\u30C9|ID>]",
|
|
56
|
+
description:`\u5168\u30DA\u30FC\u30B8\u3092\u89AA\u5B50\u306E\u9806\uFF08\u753B\u9762\u306E\u4E26\u3073\uFF09\u30671\u884C\u305A\u3064\u51FA\u3057\u307E\u3059\u3002--output text \u306F\u5B57\u4E0B\u3052\u3057\u305F\u6728\u3001table / tsv \u306F\u8981\u7D04\u5217\uFF08${WIKI_TREE_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
|
|
57
|
+
**\u672C\u6587\u306F\u3069\u306E\u51FA\u529B\u5F62\u5F0F\u3067\u3082\u51FA\u3057\u307E\u305B\u3093**\uFF08--output json \u3082\u3001\u5404\u30DA\u30FC\u30B8\u304B\u3089 content \u3068 children \u3092\u5916\u3057 depth / child_count \u3092\u8DB3\u3057\u305F\u5E73\u3089\u306A\u914D\u5217\u3067\u3059\u3002\u30B5\u30FC\u30D0\u304C\u5BFE\u5FDC\u3057\u3066\u3044\u308C\u3070\u5192\u982D\u306E\u8981\u7D04 summary\uFF08\u5E73\u6587\u3067\u5148\u982D200\u6587\u5B57\uFF09\u3068\u672C\u6587\u306E\u6587\u5B57\u6570 content_length \u304C\u5165\u308A\u307E\u3059\uFF09\u3002\u672C\u6587\u306F twp wiki get \u3067\u8AAD\u3081\u307E\u3059\u3002
|
|
58
|
+
\u4E0B\u66F8\u304D\u306F\u4F5C\u6210\u8005\u3068 wiki \u306E\u7BA1\u7406\u8005\u306B\u3057\u304B\u898B\u3048\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306E\u5224\u5B9A\uFF09\u3002`,flags:[projectFlag],async prepare(input,ctx){noArgs(input,"twp wiki tree");return withResolved(input,{project:await ctx.projectId(input.flags.get("--project"))})},plan:input=>({method:"GET",path:`${WIKI_PATH}/tree`,query:wikiTreeQuery(input)}),summarize:body=>flattenTree(body).map(row=>pick(row,WIKI_TREE_COLUMNS)),raw:flattenTree,
|
|
59
|
+
document:treeDocument};var wikiTagList={name:"tags",summary:`\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E${WIKI_LABEL}\u306B\u4ED8\u3044\u3066\u3044\u308B\u30BF\u30B0\u3092\u51FA\u3059`,usage:"twp wiki tags [--project <\u30B3\u30FC\u30C9|ID>]",description:"\u516C\u958B\uFF08published\uFF09\u306E\u30DA\u30FC\u30B8\u306B\u4ED8\u3044\u305F\u30BF\u30B0\u3092\u3001\u4ED8\u3044\u3066\u3044\u308B\u30DA\u30FC\u30B8\u306E\u591A\u3044\u9806\u306B\u6700\u592750\u4EF6\u51FA\u3057\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306E\u4ED5\u69D8\u3002\u4EF6\u6570\u306F\u8FD4\u308A\u307E\u305B\u3093\uFF09\u3002\n\u4E0B\u66F8\u304D\u306B\u3060\u3051\u4ED8\u3044\u305F\u30BF\u30B0\u306F\u51FA\u307E\u305B\u3093\u3002\u30BF\u30B0\u3067\u30DA\u30FC\u30B8\u3092\u7D5E\u308B\u306A\u3089 twp wiki list --tag <\u30BF\u30B0> \u3067\u3059\u3002",
|
|
60
|
+
flags:[projectFlag],async prepare(input,ctx){noArgs(input,"twp wiki tags");return withResolved(input,{project:await ctx.projectId(input.flags.get("--project"))})},plan:input=>({method:"GET",path:`${WIKI_PATH}/tags`,query:{project_id:requireResolved(input,"project")}}),summarize:body=>arrayField(body,"tags",`${WIKI_LABEL}\u306E\u30BF\u30B0`).map(tag=>({tag})),raw:body=>arrayField(body,"tags",`${WIKI_LABEL}\u306E\u30BF\u30B0`),notes:body=>arrayField(body,"tags",`${WIKI_LABEL}\u306E\u30BF\u30B0`).length>=
|
|
61
|
+
WIKI_TAGS_MAX?[`\u30B5\u30FC\u30D0\u304C\u8FD4\u3059\u30BF\u30B0\u306E\u4E0A\u9650\uFF08${WIKI_TAGS_MAX}\u4EF6\uFF09\u306B\u9054\u3057\u307E\u3057\u305F\u3002\u3053\u308C\u3088\u308A\u5C11\u306A\u3044\u30DA\u30FC\u30B8\u306B\u3060\u3051\u4ED8\u3044\u305F\u30BF\u30B0\u306F\u51FA\u3066\u3044\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002`]:[]};var WIKI_VERSIONS_USAGE="twp wiki versions <\u30DA\u30FC\u30B8ID> [--limit <\u4EF6\u6570>]";function versionsLimit(input){const limit=positiveInteger(
|
|
62
|
+
input.flags,"--limit");if(limit!==void 0&&limit>WIKI_VERSIONS_MAX){throw new UsageError(`--limit \u306F 1\u301C${WIKI_VERSIONS_MAX} \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${limit}`,`\u30B5\u30FC\u30D0\u304C\u8FD4\u3059\u7248\u306E\u5C65\u6B74\u306F\u65B0\u3057\u3044\u9806\u306B\u6700\u5927${WIKI_VERSIONS_MAX}\u4EF6\u3067\u3059\u3002`)}return limit}var wikiVersions={name:"versions",summary:`${WIKI_LABEL}\u306E\u7248\u306E\u5C65\u6B74\u3092\u65B0\u3057\u3044\u9806\u306B\u51FA\u3059`,
|
|
63
|
+
usage:WIKI_VERSIONS_USAGE,description:`\u7248\u306F\u672C\u6587\u304B\u4EF6\u540D\u3092\u5909\u3048\u305F\u3068\u304D\u306B1\u3064\u4E0A\u304C\u308A\u307E\u3059\u3002\u65E2\u5B9A\u306F\u65B0\u3057\u3044\u9806\u306B20\u4EF6\u3001--limit \u3067\u6700\u5927${WIKI_VERSIONS_MAX}\u4EF6\u3067\u3059\uFF08\u30B5\u30FC\u30D0\u306E\u4E0A\u9650\u3002\u305D\u308C\u3088\u308A\u53E4\u3044\u7248\u306F\u4E00\u89A7\u306B\u51FA\u307E\u305B\u3093\u304C\u3001\u7248\u756A\u53F7\u304C\u5206\u304B\u308C\u3070 twp wiki version \u3067\u8AAD\u3081\u307E\u3059\uFF09\u3002
|
|
64
|
+
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${WIKI_VERSION_COLUMNS.join(" / ")}\uFF09\u3001--output json \u306F\u5404\u7248\u306E\u672C\u6587\u3092\u542B\u3080\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u3059\u3002
|
|
65
|
+
\u7248\u306E\u672C\u6587\u306F twp wiki version <\u30DA\u30FC\u30B8ID> <\u7248>\u30012\u3064\u306E\u7248\u306E\u9055\u3044\u306F twp wiki diff <\u30DA\u30FC\u30B8ID> <\u72481> [<\u72482>] \u3067\u8AAD\u3081\u307E\u3059\u3002`,flags:[{name:"--limit",summary:`\u51FA\u3059\u4EF6\u6570\uFF081\u301C${WIKI_VERSIONS_MAX}\u30FB\u65E2\u5B9A20\uFF09`,takesValue:true,placeholder:"<\u4EF6\u6570>"}],plan(input){const{id,rest}=pageIdAndRest(input,WIKI_VERSIONS_USAGE);if(rest.length>0)throw new UsageError(`twp\
|
|
66
|
+
wiki versions \u304C\u53D7\u3051\u53D6\u308C\u308B\u30DA\u30FC\u30B8 ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,WIKI_VERSIONS_USAGE);return{method:"GET",path:`${WIKI_PATH}/${encodeURIComponent(id)}/versions`,query:{limit:versionsLimit(input)}}},summarize:body=>arrayField(body,"versions",`${WIKI_LABEL}\u306E\u7248\u306E\u5C65\u6B74`).map(row=>pick(row,WIKI_VERSION_COLUMNS)),raw:body=>arrayField(body,"versions",`${WIKI_LABEL}\u306E\u7248\u306E\u5C65\u6B74`),notes(body,input){const rows=arrayField(
|
|
67
|
+
body,"versions",`${WIKI_LABEL}\u306E\u7248\u306E\u5C65\u6B74`);const limit=versionsLimit(input)??20;if(rows.length<limit)return[];return limit<WIKI_VERSIONS_MAX?[`\u65B0\u3057\u3044\u9806\u306B ${limit} \u4EF6\u3092\u51FA\u3057\u307E\u3057\u305F\u3002\u3053\u308C\u3088\u308A\u53E4\u3044\u7248\u304C\u3042\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093\uFF08--limit ${WIKI_VERSIONS_MAX} \u307E\u3067\u5E83\u3052\u3089\u308C\u307E\u3059\uFF09\u3002`]:[`\u65B0\u3057\u3044\u9806\u306B ${WIKI_VERSIONS_MAX}\
|
|
68
|
+
\u4EF6\uFF08\u30B5\u30FC\u30D0\u306E\u4E0A\u9650\uFF09\u3092\u51FA\u3057\u307E\u3057\u305F\u3002\u3053\u308C\u3088\u308A\u53E4\u3044\u7248\u306F\u4E00\u89A7\u3067\u304D\u307E\u305B\u3093\uFF08\u7248\u756A\u53F7\u304C\u5206\u304B\u308C\u3070 twp wiki version \u3067\u8AAD\u3081\u307E\u3059\uFF09\u3002`]}};function versionRecord(body){const row=isRecord(body)&&body["result"]===true?body["version"]:void 0;if(!isRecord(row)||typeof row["version"]!=="number"){throw new ApiResponseError(`${WIKI_LABEL}\
|
|
69
|
+
\u306E\u7248\u306E\u5FDC\u7B54\u306B version \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return row}var WIKI_VERSION_USAGE="twp wiki version <\u30DA\u30FC\u30B8ID> <\u7248>";function versionPlan(id,version){return{method:"GET",path:`${WIKI_PATH}/${encodeURIComponent(id)}/versions/${version}`}}var wikiVersion={name:"version",summary:`${WIKI_LABEL}\u306E\u904E\u53BB\u306E\u72481\u3064\u3092\u8868\u793A\u3059\u308B\uFF08--output text \u3067\u672C\u6587\u3092\u8AAD\u3080\uFF09`,
|
|
70
|
+
usage:WIKI_VERSION_USAGE,description:`${TEXT_OUTPUT_HELP}
|
|
71
|
+
|
|
72
|
+
--output table / tsv \u306F\u8981\u7D04\u5217\uFF08${["page_id",...WIKI_VERSION_COLUMNS].join(" / ")}\uFF09\u3067\u3059\u3002\u7248\u306E\u756A\u53F7\u306F twp wiki versions \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`,flags:[],plan(input){const{id,rest}=pageIdAndRest(input,WIKI_VERSION_USAGE);if(rest.length!==1)throw new UsageError("\u30DA\u30FC\u30B8 ID \u3068\u7248\u30921\u3064\u305A\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",WIKI_VERSION_USAGE);return versionPlan(id,versionNumber(
|
|
73
|
+
rest[0],WIKI_VERSION_USAGE))},summarize:body=>pick(versionRecord(body),["page_id",...WIKI_VERSION_COLUMNS]),raw:versionRecord,document(body){const v=versionRecord(body);return composeDocument(v["title"],[...metaLine("\u7248",v["version"]),...metaLine("\u5F62\u5F0F",v["content_format"]),...metaLine("\u5909\u66F4",v["changed_at"]),...metaLine("\u5909\u66F4\u8005",v["changed_by_name"]),...metaLine("\u30DA\u30FC\u30B8ID",v["page_id"])],[{body:wikiContentToText(v["content"],v["content_format"])}])}};
|
|
74
|
+
var WIKI_DIFF_USAGE="twp wiki diff <\u30DA\u30FC\u30B8ID> <\u72481> [<\u72482>]";function diffArgs(input){const{id,rest}=pageIdAndRest(input,WIKI_DIFF_USAGE);if(rest.length<1||rest.length>2)throw new UsageError("\u6BD4\u3079\u308B\u7248\u30921\u3064\u304B2\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u72482\u3092\u7701\u304F\u3068\u3044\u307E\u306E\u7248\u3068\u6BD4\u3079\u307E\u3059\uFF09",WIKI_DIFF_USAGE);const from=versionNumber(rest[0],WIKI_DIFF_USAGE);const to=rest[1]===void 0?
|
|
75
|
+
void 0:versionNumber(rest[1],WIKI_DIFF_USAGE);return{id,from,to}}function diffSide(row,changedAt,changedBy){return{version:row["version"]??null,title:row["title"]??null,changed_at:row[changedAt]??null,changed_by_name:row[changedBy]??null,text:comparableText(row["content"],row["content_format"])}}var SIGNED_IMAGE=/(!\[[^\]\n]*\]\()([^)\s?]*)\?[^)\s]*\)/g;function comparableText(content,format){const text2=wikiContentToText(content,format).replace(SIGNED_IMAGE,"$1$2)");return`${text2.trimEnd()}
|
|
76
|
+
`}var DIFF_CONTEXT=3;function collapseUnchanged(lines){const out=[];let run=[];const flush=(atStart,atEnd)=>{const head=atStart?0:DIFF_CONTEXT;const tail=atEnd?0:DIFF_CONTEXT;if(run.length>head+tail+1){for(const l of run.slice(0,head))out.push(` ${String(l["text"])}`);out.push(` \u22EF ${run.length-head-tail} \u884C\u7701\u7565`);for(const l of run.slice(run.length-tail))out.push(` ${String(l["text"])}`)}else{for(const l of run)out.push(` ${String(l["text"])}`)}run=[]};let seenChange=false;for(const line of lines){
|
|
77
|
+
if(line["sign"]===" "){run.push(line);continue}flush(!seenChange,false);seenChange=true;out.push(`${String(line["sign"])} ${String(line["text"])}`)}flush(!seenChange,true);return out}function diffBody(body){if(!isRecord(body)||!Array.isArray(body["lines"]))throw new ApiResponseError(`${WIKI_LABEL}\u306E\u5DEE\u5206\u3092\u7D44\u307F\u7ACB\u3066\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002`);return body}function sideLabel(side){const s=isRecord(side)?side:{};return`\u7248 ${String(s["ver\
|
|
78
|
+
sion"]??"?")}\uFF08${String(s["changed_at"]??"\u65E5\u6642\u4E0D\u660E")}${typeof s["changed_by_name"]==="string"?`\u30FB${s["changed_by_name"]}`:""}\uFF09`}var wikiDiff={name:"diff",summary:`${WIKI_LABEL}\u306E2\u3064\u306E\u7248\u306E\u672C\u6587\u306E\u5DEE\u5206\u3092\u51FA\u3059\uFF08\u72482\u3092\u7701\u304F\u3068\u3044\u307E\u306E\u7248\u3068\u6BD4\u3079\u308B\uFF09`,usage:WIKI_DIFF_USAGE,description:"2\u3064\u306E\u7248\u3092\u53D6\u5F97\u3057\u3001\u672C\u6587\u3092\u5E73\u6587\u306B\u3057\u3066\u304B\u3089\u884C\u5358\u4F4D\u3067\u6BD4\u3079\u307E\u3059\uFF08HTML \u306E\u30BF\u30B0\u3060\u3051\u306E\u9055\u3044\u306F\u51FA\u307E\u305B\u3093\uFF09\u3002\u4EF6\u540D\u304C\u9055\u3048\u3070\u4EF6\u540D\u306E\u9055\u3044\u3082\u51FA\u3057\u307E\u3059\u3002\n<\u72482> \u3092\u7701\u304F\u3068\u3001\u3044\u307E\u306E\u30DA\u30FC\u30B8\uFF08twp w\
|
|
79
|
+
iki get \u306E version\uFF09\u3068\u6BD4\u3079\u307E\u3059\u3002\n\n--output text \u306F `- ` \u304C\u72481\u306B\u3060\u3051\u3042\u308B\u884C\u3001`+ ` \u304C\u72482\u306B\u3060\u3051\u3042\u308B\u884C\u306E\u5DEE\u5206\u3067\u3059\uFF08\u5909\u308F\u3089\u306A\u3044\u90E8\u5206\u306F\u524D\u5F8C3\u884C\u3092\u6B8B\u3057\u3066\u7701\u7565\uFF09\u3002--output json / table / tsv \u306F\u7701\u7565\u305B\u305A\u5168\u884C\u3092\u51FA\u3057\u307E\u3059\u3002\n\u753B\u50CF\u306E URL \u306F\u53D6\u5F97\u306E\u305F\u3073\u306B\u7F72\u540D\u3057\u76F4\u3055\u308C\u308B\u306E\u3067\u3001\u30AF\u30A8\u30EA\u3092\u843D\u3068\u3057\u3066\u304B\u3089\u6BD4\u3079\u307E\u3059\u3002\n--output json \u306F {page_id, from, to, title_changed, added, removed, lines: [{sign, text}]} \u3067\u3059\uFF08from / to \u306F\u7248\u30FB\u4EF6\u540D\u30FB\u5909\u66F4\u65E5\u6642\u30FB\u5909\u66F4\u8005\uFF09\u3002",
|
|
80
|
+
flags:[],plan(input){const{id,from}=diffArgs(input);return versionPlan(id,from)},plannedNotes(input){const{id,to}=diffArgs(input);return[`\u7D9A\u3051\u3066${to===void 0?`\u3044\u307E\u306E\u30DA\u30FC\u30B8\uFF08GET ${WIKI_PATH}/${id}\uFF09`:`\u7248 ${to}\uFF08GET ${WIKI_PATH}/${id}/versions/${to}\uFF09`}\u3092\u53D6\u5F97\u3057\u3001CLI \u3067\u5DEE\u5206\u3092\u51FA\u3057\u307E\u3059\u3002`]},async execute(input,ctx){const{id,from,to}=diffArgs(input);const a=diffSide(versionRecord(await ctx.send(
|
|
81
|
+
versionPlan(id,from))),"changed_at","changed_by_name");const b=to===void 0?diffSide(record(await ctx.send({method:"GET",path:`${WIKI_PATH}/${encodeURIComponent(id)}`}),"page",WIKI_LABEL),"updated_at","updated_by_name"):diffSide(versionRecord(await ctx.send(versionPlan(id,to))),"changed_at","changed_by_name");const lines=a.text===b.text?[]:buildDiffLines(a.text,b.text,Number.POSITIVE_INFINITY);const{added,removed}=diffStat(lines);const meta=side=>({version:side.version,title:side.title,changed_at:side.
|
|
82
|
+
changed_at,changed_by_name:side.changed_by_name});return{page_id:id,from:meta(a),to:meta(b),title_changed:a.title!==b.title,added,removed,lines}},summarize:body=>diffBody(body)["lines"],raw:diffBody,document(body){const d=diffBody(body);const from=isRecord(d["from"])?d["from"]:{};const to=isRecord(d["to"])?d["to"]:{};const out=[`--- ${sideLabel(from)}`,`+++ ${sideLabel(to)}`];if(d["title_changed"]===true)out.push(`\u4EF6\u540D: ${oneLine(String(from["title"]??""))} \u2192 ${oneLine(String(to["ti\
|
|
83
|
+
tle"]??""))}`);const lines=d["lines"];if(lines.length===0){out.push("\u672C\u6587\u306B\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\u3002")}else{out.push(...collapseUnchanged(lines.filter(isRecord)));out.push(`\uFF08+${String(d["added"])} / -${String(d["removed"])} \u884C\uFF09`)}return`${out.join("\n")}
|
|
84
|
+
`}};var wikiBacklinks={name:"backlinks",summary:`${WIKI_LABEL}\u3078\u30EA\u30F3\u30AF\u3057\u3066\u3044\u308B\u30DA\u30FC\u30B8\u3092\u51FA\u3059\uFF08\u30EA\u30F3\u30AF\u5468\u8FBA\u306E\u672C\u6587\u306E\u629C\u7C8B\u3064\u304D\uFF09`,usage:"twp wiki backlinks <\u30DA\u30FC\u30B8ID>",description:`\u540C\u3058\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u4E2D\u3067\u3001\u3053\u306E\u30DA\u30FC\u30B8\u3078\u30EA\u30F3\u30AF\u3057\u3066\u3044\u308B\u30DA\u30FC\u30B8\u3092\u66F4\u65B0\u306E\u65B0\u3057\u3044\u9806\u306B\u51FA\u3057\u307E\u3059\u3002link_context \u306F\u30EA\u30F3\u30AF\u306E\u524D\u5F8C\u306E\u672C\u6587\u306E\u629C\u7C8B\u3067\u3059\u3002
|
|
85
|
+
\u898B\u3048\u306A\u3044\u4E0B\u66F8\u304D\uFF08\u4ED6\u4EBA\u306E\u4E0B\u66F8\u304D\u3068\u3001\u305D\u306E\u914D\u4E0B\u306E\u30DA\u30FC\u30B8\uFF09\u304B\u3089\u306E\u30EA\u30F3\u30AF\u306F\u51FA\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306E\u5224\u5B9A\uFF09\u3002
|
|
86
|
+
|
|
87
|
+
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${WIKI_BACKLINK_COLUMNS.join(" / ")}\uFF09\u3001--output json \u306F\u30DA\u30FC\u30B8\u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u672C\u6587 content \u3092\u542B\u3080\uFF09\u3067\u3059\u3002`,flags:[],plan:input=>({method:"GET",path:`${WIKI_PATH}/${encodeURIComponent(singleId(input,"twp wiki backlinks","\u30DA\u30FC\u30B8","twp wiki list"))}/backlinks`}),summarize:body=>arrayField(body,"backlinks",`${WIKI_LABEL}\u306E\u88AB\u30EA\u30F3\u30AF`).
|
|
88
|
+
map(row=>pick(row,WIKI_BACKLINK_COLUMNS)),raw:body=>arrayField(body,"backlinks",`${WIKI_LABEL}\u306E\u88AB\u30EA\u30F3\u30AF`)};function linkedTaskRow(row){const link=isRecord(row)?row:{};const task=isRecord(link["task"])?link["task"]:{};return pick({...link,key:task["key"],subject:task["subject"],status_id:task["status_id"]},WIKI_LINKED_TASK_COLUMNS)}var wikiLinkedTasks={name:"linked-tasks",summary:`${WIKI_LABEL}\u306B\u7D10\u3065\u3044\u3066\u3044\u308B\u30BF\u30B9\u30AF\u3092\u51FA\u3059`,usage:"\
|
|
89
|
+
twp wiki linked-tasks <\u30DA\u30FC\u30B8ID>",description:`\u30BF\u30B9\u30AF\u5074\u304B\u3089\u3053\u306E\u30DA\u30FC\u30B8\u3078\u5F35\u3063\u305F\u95A2\u9023\u4ED8\u3051\u3092\u51FA\u3057\u307E\u3059\u3002\u95B2\u89A7\u6A29\u9650\u306E\u7121\u3044\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30BF\u30B9\u30AF\u3068\u3001\u524A\u9664\u6E08\u307F\u306E\u30BF\u30B9\u30AF\u306F\u51FA\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306E\u5224\u5B9A\uFF09\u3002
|
|
90
|
+
status_id \u306F\u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306E ID \u3067\u3059\uFF08\u540D\u524D\u306F twp task status list \u3067\u5F15\u3051\u307E\u3059\uFF09\u3002
|
|
91
|
+
|
|
92
|
+
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${WIKI_LINKED_TASK_COLUMNS.join(" / ")}\uFF09\u3001--output json \u306F\u30EA\u30F3\u30AF\u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08task \u306E\u5165\u308C\u5B50\u3092\u542B\u3080\uFF09\u3067\u3059\u3002`,flags:[],plan:input=>({method:"GET",path:`${WIKI_PATH}/${encodeURIComponent(singleId(input,"twp wiki linked-tasks","\u30DA\u30FC\u30B8","twp wiki list"))}/linked-tasks`}),summarize:body=>arrayField(body,"linked_tasks",`${WIKI_LABEL}\
|
|
93
|
+
\u306E\u95A2\u9023\u30BF\u30B9\u30AF`).map(linkedTaskRow),raw:body=>arrayField(body,"linked_tasks",`${WIKI_LABEL}\u306E\u95A2\u9023\u30BF\u30B9\u30AF`)};var WIKI_CONTENT_MAX_CHARS=4e5;var WIKI_TITLE_MAX_CHARS=255;var WIKI_TAG_MAX_CHARS=50;var WIKI_CREATE_USAGE="twp wiki create --project <\u30B3\u30FC\u30C9|ID> --title <\u4EF6\u540D> --content-file <\u30D1\u30B9|-> [--content-format <html|markdown>] [--parent <\u30DA\u30FC\u30B8ID>] [--status <draft|published>] [--tag <\u30BF\u30B0>]...";var WIKI_UPDATE_USAGE="\
|
|
94
|
+
twp wiki update <\u30DA\u30FC\u30B8ID> [--title <\u4EF6\u540D>] [--content-file <\u30D1\u30B9|->] [--content-format <html|markdown>] [--status <draft|published>] [--tag <\u30BF\u30B0>]... [--clear-tags] [--if-version <\u7248>]";var WIKI_MOVE_USAGE="twp wiki move <\u30DA\u30FC\u30B8ID> [--parent <\u30DA\u30FC\u30B8ID>|root] [--sort-order <\u9806>]";var CONTENT_FILE_FLAG={name:"--content-file",summary:"\u672C\u6587\u3092\u8AAD\u3080\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u3002\u52A0\u5DE5\u305B\u305A\u306B\u9001\u308B",
|
|
95
|
+
takesValue:true,placeholder:"<\u30D1\u30B9|->"};var WIKI_CONTENT_FORMAT_FLAG={name:"--content-format",summary:`\u672C\u6587\u306E\u5F62\u5F0F\uFF08${WIKI_CONTENT_FORMATS.join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u5F62\u5F0F>"};var WIKI_STATUS_FLAG={name:"--status",summary:`\u72B6\u614B\uFF08${WIKI_STATUSES.join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u72B6\u614B>"};var WIKI_TAG_FLAG={name:"--tag",summary:`\u30BF\u30B0\uFF08\u8907\u6570\u56DE\u53EF\u30FB${WIKI_TAG_MAX_CHARS}\u6587\u5B57\u4EE5\u5185\uFF09`,
|
|
40
96
|
takesValue:true,placeholder:"<\u30BF\u30B0>",repeatable:true};var WIKI_WRITE_HELP="\u672C\u6587\u306F --content-file \u306E\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09\u304B\u3089\u8AAD\u307F\u3001\u52A0\u5DE5\u305B\u305A\u306B\u9001\u308A\u307E\u3059\uFF08\u5148\u982D\u306E BOM \u3060\u3051\u843D\u3068\u3057\u307E\u3059\uFF09\u3002\n\u672C\u6587\u306E\u5F62\u5F0F\u306F --content-format\uFF08html / markdown\uFF09\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\u7701\u304F\u3068 HTML \u306E\u30DA\u30FC\u30B8\u306B\u306A\u308A\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306E\u65E2\u5B9A\uFF09\u3002\nMarkdown \u306E\u672C\u6587\u306F --content-format markdown \u3067\u9001\u3063\u3066\u304F\u3060\u3055\u3044\u3002HTML \u306E\u30DA\u30FC\u30B8\u306B Markdown \u3092\u9001\u3063\u3066\u3082\u5909\u63DB\u3057\u306A\u3044\u306E\u3067\u3001\u753B\u9762\u3067\u306F\u8A18\u53F7\u306E\u307E\u307E\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\u30DA\u30FC\u30B8\u306E\u5F62\u5F0F\u306F\u4F5C\u6210\u5F8C\u306B\u5909\u3048\u3089\u308C\u307E\u305B\u3093\uFF08update \u3067\u9055\u3046\u5F62\u5F0F\u3092\u6307\u5B9A\u3059\u308B\u3068\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF09\u3002\n\u7DE8\u96C6\u30FB\u79FB\u52D5\u30FB\u524A\u9664\u3067\u304D\u308B\u306E\u306F\u3001\u30DA\u30FC\u30B8\u306E\u4F5C\u6210\u8005\u30FBwiki \u306E\u7BA1\u7406\u8005\u30FB\u7D44\u7E54\u306E\u7BA1\u7406\u8005\u3067\u3059\uFF08\u6A29\u9650\u304C\u7121\u3051\u308C\u3070\u30B5\u30FC\u30D0\u306E 403 \u306E\u6587\u9762\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\uFF09\u3002";
|
|
41
97
|
async function wikiContent(input,usage){return readBody(input,{flag:"--content",fileFlag:"--content-file",label:"wiki \u306E\u672C\u6587",maxChars:WIKI_CONTENT_MAX_CHARS,usage})}function wikiTitle(input){const raw=input.flags.get("--title");if(raw===void 0)return void 0;if(raw.trim()==="")throw new UsageError("--title \u304C\u7A7A\u3067\u3059","\u4EF6\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");const count=charCount(raw);if(count>WIKI_TITLE_MAX_CHARS){throw new UsageError(
|
|
42
98
|
`--title \u304C\u9577\u3059\u304E\u307E\u3059\uFF08${count} \u6587\u5B57\u30FB\u4E0A\u9650 ${WIKI_TITLE_MAX_CHARS} \u6587\u5B57\uFF09`,"\u30B5\u30FC\u30D0\u306E\u4E0A\u9650\u304C255\u6587\u5B57\u3067\u3059\u3002")}return raw}function wikiTags(input){const tags=repeatedValues(input,"--tag").map(tag=>tag.trim());const clear=input.flags.has("--clear-tags");if(clear&&tags.length>0){throw new UsageError("--tag \u3068 --clear-tags \u306F\u4F75\u7528\u3067\u304D\u307E\u305B\u3093","--tag \u306F\u30BF\u30B0\u3092\u307E\u308B\u3054\u3068\u7F6E\u304D\u63DB\u3048\u307E\u3059\
|
|
@@ -121,5 +177,5 @@ ine"]],["\u72B6\u614B",status]])}`]}).join("\n")}function attendeeNames(value,ke
|
|
|
121
177
|
|
|
122
178
|
--output table / tsv \u306F\u8981\u7D04\u5217\uFF08${MEETING_GET_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
|
|
123
179
|
\u95B2\u89A7\u3067\u304D\u306A\u3044\u8B70\u4E8B\u9332\u306F\u300C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u300D\u306B\u306A\u308A\u307E\u3059\uFF08\u516C\u958B\u7BC4\u56F2\u306E\u5224\u5B9A\u306F\u30B5\u30FC\u30D0\uFF09\u3002`,flags:[],plan:input=>({method:"GET",path:`${MEETINGS_PATH}/${encodeURIComponent(singleId(input,"twp meeting get","\u8B70\u4E8B\u9332","twp meeting list"))}`}),summarize:body=>pick(record(body,"meeting",MEETING_LABEL),MEETING_GET_COLUMNS),raw:body=>record(body,"meeting",
|
|
124
|
-
MEETING_LABEL),document:meetingDocument};var wikiDomain={name:"wiki",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E wiki\uFF08\u4E00\u89A7\u30FB\u672C\u6587\
|
|
125
|
-
meeting",summary:"\u8B70\u4E8B\u9332\uFF08\u671F\u9593\u3067\u306E\u4E00\u89A7\u30FB\u672C\u6587\u3092\u8AAD\u3080\uFF09",operations:[meetingList,meetingGet]};export{meetingDomain,noteDomain,wikiDomain};
|
|
180
|
+
MEETING_LABEL),document:meetingDocument};var wikiDomain={name:"wiki",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E wiki\uFF08\u4E00\u89A7\u30FB\u672C\u6587\u30FB\u69CB\u9020\u30FB\u30BF\u30B0\u30FB\u7248\u306E\u5C65\u6B74\u3068\u5DEE\u5206\u30FB\u88AB\u30EA\u30F3\u30AF\u30FB\u95A2\u9023\u30BF\u30B9\u30AF\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u79FB\u52D5\u30FB\u524A\u9664\uFF09",operations:[wikiList,wikiGet,wikiTree,wikiTagList,wikiVersions,wikiVersion,wikiDiff,wikiBacklinks,wikiLinkedTasks,
|
|
181
|
+
wikiCreate,wikiUpdate,wikiMove,wikiDelete]};var noteDomain={name:"note",summary:"\u30CE\u30FC\u30C8\uFF08\u4E00\u89A7\u30FB\u672C\u6587\u3092\u8AAD\u3080\uFF09",operations:[noteList,noteGet]};var meetingDomain={name:"meeting",summary:"\u8B70\u4E8B\u9332\uFF08\u671F\u9593\u3067\u306E\u4E00\u89A7\u30FB\u672C\u6587\u3092\u8AAD\u3080\uFF09",operations:[meetingList,meetingGet]};export{meetingDomain,noteDomain,wikiDomain};
|
|
@@ -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-LUBON4AA.js";import"./chunk-YUS4VPNA.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-YXVN6OCH.js";import"./chunk-UFGJSWKU.js";import{contentTypeFor,inspectLocalFile}from"./chunk-I4TR55UF.js";import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";import"./chunk-GY7KI5E5.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,
|
|
4
4
|
nonEmpty,positiveInteger,readEnvelopeCursor,shellQuote}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-HNG6MF26.js";import{collapsesInUrlPath,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{
|
|
5
5
|
acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import"./chunk-PECIBNFD.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-KDH3KWPO.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-JA7HEJOU.js";import"./chunk-MAAICW7T.js";import"./chunk-DXUFECE7.js";import"./chunk-5KAWCLYN.js";import"./chunk-LJVAOWZI.js";import"./chunk-G4TZFGNN.js";import"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-GY7KI5E5.js";import"./chunk-II5RVJQN.js";import"./chunk-PMOUHEJQ.js";
|
|
4
4
|
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-YUS4VPNA.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-LUBON4AA.js";import"./chunk-YUS4VPNA.js";import"./chunk-Q3B65OFC.js";import"./chunk-GFLGXGWE.js";import"./chunk-YXVN6OCH.js";import"./chunk-UFGJSWKU.js";import"./chunk-MI6HVYR2.js";import"./chunk-RX5HWI4L.js";import"./chunk-HNG6MF26.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";
|
|
4
4
|
import"./chunk-H4CDX4TX.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-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-KDH3KWPO.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};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,parseTs}from"./chunk-
|
|
3
|
+
import{ScheduleApi,collectDue,gateStatus,nowInZone,parseCounts,parseTs}from"./chunk-OREF2S43.js";import"./chunk-5KAWCLYN.js";import"./chunk-6CS5L24D.js";import"./chunk-GY7KI5E5.js";import"./chunk-J7QYPKVK.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";async function runScheduleCommand(deps,opts){const out=deps.out??(t=>void process.stdout.write(stripTerminalControls(t)));const err=deps.err??(t=>void process.stderr.write(stripTerminalControls(t)));const schedules=new ScheduleApi(deps.api);let now;if(opts.now){const parsed=parseTs(opts.now);if(!parsed){err(`--now \u306E\u5F62\u5F0F\u304C\u4E0D\u6B63\u3067\u3059: ${opts.now}\uFF08\u4F8B 2026-08-18T15:30\uFF09
|
|
4
4
|
`);return 2}now=parsed}else{now=nowInZone(deps.config.scheduleTimezone,m=>err(`${m}
|
|
5
5
|
`))}const defs=await schedules.definitions();if(defs.kind==="error"){err(`\u26D4 ${defs.message}
|
|
6
6
|
`);if(opts.gate!==void 0){err("\u5B9A\u7FA9\u304C\u53D6\u308C\u306A\u3044\u305F\u3081\u30B2\u30FC\u30C8\u306F\u8A31\u53EF\u6271\u3044\u306B\u3057\u307E\u3059\n");return 0}return 4}if(opts.gate!==void 0){const{allowed,reason}=gateStatus(opts.gate,now,defs.config.gates);if(allowed)return 0;out(`${reason}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{apiExit,currentRevisionOf,errorDetail,pickNumber,printDiff,readUtf8Strict,shellQuote,warnHiddenChars}from"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{EXIT_API_CLIENT,EXIT_API_SERVER,EXIT_FAILURE,EXIT_OK,EXIT_USAGE}from"./chunk-VFPY2A23.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import*as fs from"fs";var SERVER_DEFAULTS={priority:"P3",order:50,catch_up:true,grace_minutes:120,max_attempts_per_window:2,safe_mode_ok:true,enabled:true,args:"",args_rotation:[],label:"",require_zero:[],required_platforms:[]};var SERVER_META_KEYS=new Set(["updated_by","updated_by_name","updated_at","revision"]);var CONFIG_KEYS=["max_per_cycle","gates","require_zero_statuses"];var FILE_TOP_KEYS=new Set(["schedules","config_meta",...CONFIG_KEYS]);var SCHEDULE_ID=/^[a-z0-9][a-z0-9._-]{0,63}$/;async function runScheduleDefCommand(deps,opts){
|
|
4
|
+
const io={out:deps.out??(t=>void process.stdout.write(stripTerminalControls(t))),err:deps.err??(t=>void process.stderr.write(stripTerminalControls(t))),readFile:deps.readFile??readUtf8Strict,writeFile:deps.writeFile??((p,c)=>fs.writeFileSync(p,c,"utf8")),exists:deps.exists??(p=>fs.existsSync(p))};switch(opts.op){case"list":return list(deps.api,io);case"push":return push(deps.api,opts,io);case"delete":return remove(deps.api,opts,io);case"config":return opts.configOp==="push"?configPush(deps.api,opts,
|
|
5
|
+
io):configPull(deps.api,opts,io)}}async function list(api,io){const remote=await fetchRemote(api,io.err);if(typeof remote==="number")return remote;io.out(`\u5B9A\u7FA9 ${remote.schedules.length} \u4EF6\uFF08max_per_cycle=${JSON.stringify(remote.maxPerCycle??null)}\u30FB\u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A revision ${remote.configRevision??"\u4E0D\u660E"}\uFF09
|
|
6
|
+
`);if(remote.schedules.length>0){io.out(["id","\u6709\u52B9","skill","\u5F15\u6570","\u767A\u706B\u306E\u6761\u4EF6","\u4EF6\u6570\u30B2\u30FC\u30C8","\u512A\u5148","revision","\u30E9\u30D9\u30EB"].join(" ")+"\n");for(const s of[...remote.schedules].sort((a,b)=>str(a["id"]).localeCompare(str(b["id"])))){io.out(row(s)+"\n")}}for(const w of remote.warnings)io.err(`\u26A0\uFE0F ${w}
|
|
7
|
+
`);if(remote.canWrite===false){io.err("\u3053\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306F\u5B9A\u7FA9\u3092\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093\uFF08\u66F8\u304D\u8FBC\u307F\u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u7BA1\u7406\u8005\u4EE5\u4E0A\uFF09\n")}return EXIT_OK}function row(s){const rotation=Array.isArray(s["args_rotation"])?s["args_rotation"]:[];const args=rotation.length>0?`${str(s["args"])}\uFF08\u30ED\u30FC\u30C6\u30FC\u30B7\u30E7\u30F3 ${rotation.length} \u4EF6\uFF09`:str(
|
|
8
|
+
s["args"]);const requireZero=Array.isArray(s["require_zero"])?s["require_zero"].map(String).join(","):str(s["require_zero"]);const fields=[str(s["id"]),s["enabled"]===false?"\u7121\u52B9":"\u6709\u52B9",str(s["skill"]),args,describeWhen(s["when"]),requireZero,str(s["priority"]),String(s["revision"]??""),str(s["label"])];return fields.map(f=>f.replace(/[\t\r\n]/g," ")).join(" ")}function describeWhen(when){const w=when&&typeof when==="object"?when:{};const type=str(w["type"]).toLowerCase()||"dail\
|
|
9
|
+
y";const after=str(w["after"])||"00:00";if(type==="daily")return`\u6BCE\u65E5 ${after}\u4EE5\u964D`;if(type==="weekly"){const days=Array.isArray(w["days"])&&w["days"].length>0?w["days"].map(String).join("/"):"mon";return`\u6BCE\u9031 ${days} ${after}\u4EE5\u964D`}if(type==="monthly")return`\u6BCE\u6708 ${String(w["day"]??1)}\u65E5 ${after}\u4EE5\u964D`;if(type==="interval")return`\u524D\u56DE\u304B\u3089${String(w["every_hours"]??24)}h\u7D4C\u904E`;return type}async function push(api,opts,io){const file=opts.
|
|
10
|
+
file??"";let expected;if(opts.revision!==void 0){const map=parseRevisionMap(opts.revision);if(map===null){io.err(`push \u306E --revision \u306F\u300C\u5B9A\u7FA9ID=\u756A\u53F7\u300D\u3092\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: daily-verify=3,new-one=0\uFF09: ${opts.revision}
|
|
11
|
+
`);return EXIT_USAGE}if(!opts.yes){io.err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u66F8\u304D\u8FBC\u307F\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=map}const parsed=readJsonFile(file,io);if(parsed===null)return EXIT_USAGE;const defs=definitionsOf(parsed,file,io);if(defs===null)return EXIT_USAGE;if(!Array.isArray(parsed)&&typeof parsed==="object"&&CONFIG_KEYS.some(k=>k in parsed)){io.err("\uFF08\u30D5\
|
|
12
|
+
\u30A1\u30A4\u30EB\u306E\u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A\u306F\u9001\u308A\u307E\u305B\u3093\u3002\u9001\u308B\u306B\u306F schedule config push \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\uFF09\n")}const remote=await fetchRemote(api,io.err);if(typeof remote==="number")return remote;const plan=planOf(defs,remote.schedules);io.out(`push \u5BFE\u8C61: \u4F5C\u6210 ${plan.creates.length} \u4EF6 / \u66F4\u65B0 ${plan.updates.length} \u4EF6 / \u5909\u66F4\u306A\u3057 ${plan.unchanged} \u4EF6\
|
|
13
|
+
|
|
14
|
+
`);for(const d of plan.creates){io.out(` + ${str(d["id"])}
|
|
15
|
+
`);for(const line of JSON.stringify(payloadOf(d),null,2).split("\n"))io.out(` ${line}
|
|
16
|
+
`)}for(const u of plan.updates){io.out(` ~ ${str(u.def["id"])}\uFF08\u30B5\u30FC\u30D0 revision ${u.revision??"\u4E0D\u660E"}\uFF09
|
|
17
|
+
`);for(const f of u.fields){io.out(` ${f.key}: \u30B5\u30FC\u30D0=${JSON.stringify(f.server??null)} \u2192 \u30D5\u30A1\u30A4\u30EB=${JSON.stringify(f.file??null)}
|
|
18
|
+
`)}}for(const id of plan.onlyRemote)io.out(` ! \u30B5\u30FC\u30D0\u306B\u306E\u307F\u5B58\u5728\uFF08\u524A\u9664\u3057\u307E\u305B\u3093\uFF09: ${id}
|
|
19
|
+
`);if(plan.creates.length===0&&plan.updates.length===0){io.out("\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u66F8\u304D\u8FBC\u307F\u307E\u305B\u3093\u3067\u3057\u305F\u3002\n");return EXIT_OK}warnHiddenChars(io.out,JSON.stringify([...plan.creates,...plan.updates.map(u=>u.def)].map(payloadOf)));const shown=[...plan.creates.map(d=>`${str(d["id"])}=0`),...plan.updates.map(u=>`${str(u.def["id"])}=${u.revision??0}`)].join(",");if(!opts.yes){io.out(`
|
|
20
|
+
\u66F8\u304D\u8FBC\u3093\u3067\u3044\u307E\u305B\u3093\u3002\u3053\u306E\u5185\u5BB9\u3067\u78BA\u5B9A\u3059\u308B\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u8868\u793A\u3057\u305F revision \u3092\u9001\u308B\u306E\u3067\u3001\u305D\u306E\u5F8C\u30B5\u30FC\u30D0\u3067\u66F4\u65B0\u3055\u308C\u305F\u5B9A\u7FA9\u304C\u3042\u308C\u30701\u4EF6\u3082\u66F8\u304B\u305A\u306B\u6B62\u307E\u308A\u307E\u3059\uFF09:
|
|
21
|
+
${confirmCommand(opts,["push"],{file,revision:shown})}
|
|
22
|
+
`);return EXIT_USAGE}if(expected!==void 0){const planned=new Map([...plan.creates.map(d=>[str(d["id"]),0]),...plan.updates.map(u=>[str(u.def["id"]),u.revision??-1])]);const fileIds=new Set(defs.map(d=>str(d["id"])));const unseen=[...planned.keys()].filter(id=>!expected.has(id));const unknown=[...expected.keys()].filter(id=>!fileIds.has(id));if(unseen.length>0||unknown.length>0){io.err(`\u26D4 \u6848\u5185\u3057\u305F --revision \u3068\u3001\u3044\u307E\u306E\u5DEE\u5206\u306E\u5BFE\u8C61\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093\uFF08\u8868\u793A\u3057\u305F\u5F8C\u306B\u30D5\u30A1\u30A4\u30EB\u304B\u30B5\u30FC\u30D0\u304C\u5909\u308F\u308A\u307E\u3057\u305F\uFF09\u30021\u4EF6\u3082\u66F8\u3044\u3066\u3044\u307E\u305B\u3093${unseen.
|
|
23
|
+
length>0?`\uFF0F\u6848\u5185\u306B\u7121\u3044: ${unseen.join(", ")}`:""}${unknown.length>0?`\uFF0F\u30D5\u30A1\u30A4\u30EB\u306B\u7121\u3044: ${unknown.join(", ")}`:""}
|
|
24
|
+
`);return EXIT_USAGE}const moved=[...planned.entries()].filter(([id,rev])=>expected.get(id)!==rev);if(moved.length>0){io.err("\u26D4 \u8868\u793A\u3057\u305F\u5F8C\u306B\u30B5\u30FC\u30D0\u3067\u66F4\u65B0\u3055\u308C\u305F\u5B9A\u7FA9\u304C\u3042\u308A\u307E\u3059\u3002\u4E0A\u66F8\u304D\u305B\u305A\u306B\u6B62\u3081\u307E\u3057\u305F\uFF081\u4EF6\u3082\u66F8\u3044\u3066\u3044\u307E\u305B\u3093\uFF09: "+moved.map(([id,rev])=>`${id}\uFF08\u6848\u5185 ${expected.get(id)} \u2192 \u73FE\u5728 ${rev}\
|
|
25
|
+
\uFF09`).join(", ")+"\n");return EXIT_API_CLIENT}}let failure=null;for(const d of plan.creates){const res=await api.request("POST","/schedules/definitions",payloadOf(d));if(res.ok){io.out(` \u4F5C\u6210: ${str(d["id"])}
|
|
26
|
+
`);continue}io.err(` \u26D4 \u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 ${str(d["id"])}\uFF08${errorDetail(res)}\uFF09
|
|
27
|
+
`);if(res.status===401||res.status===403)return apiExit(res);failure??=apiExit(res)}for(const u of plan.updates){if(u.revision===null){io.err(` \u26D4 \u66F4\u65B0\u3067\u304D\u307E\u305B\u3093 ${str(u.def["id"])}\uFF08\u30B5\u30FC\u30D0\u306E\u5FDC\u7B54\u306B revision \u304C\u3042\u308A\u307E\u305B\u3093\uFF09
|
|
28
|
+
`);failure??=EXIT_API_SERVER;continue}const id=str(u.def["id"]);const res=await api.request("PUT",`/schedules/definitions/${encodeURIComponent(id)}`,{...payloadOf(u.def),revision:u.revision});if(res.ok){io.out(` \u66F4\u65B0: ${id}
|
|
29
|
+
`);continue}if(res.status===409){const now=currentRevisionOf(res);io.err(` \u26D4 409: ${id} \u306F revision ${u.revision} \u3067\u9001\u308A\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u306F${now!==null?` revision ${now} \u306B`:""}\u66F4\u65B0\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u4E0A\u66F8\u304D\u305B\u305A\u306B\u6B62\u3081\u307E\u3057\u305F
|
|
30
|
+
`)}else{io.err(` \u26D4 \u66F4\u65B0\u3067\u304D\u307E\u305B\u3093 ${id}\uFF08${errorDetail(res)}\uFF09
|
|
31
|
+
`)}if(res.status===401||res.status===403)return apiExit(res);failure??=apiExit(res)}const after=await fetchRemote(api,io.err);if(typeof after==="number")return after;const rest=planOf(defs,after.schedules);const remaining=rest.creates.length+rest.updates.length;if(failure!==null||remaining>0){io.err(`\u26D4 \u53CD\u6620\u304C\u53CE\u675F\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u30D5\u30A1\u30A4\u30EB\u3068\u9055\u3046\u5B9A\u7FA9\u304C ${remaining} \u4EF6\u6B8B\u3063\u3066\u3044\u307E\u3059\uFF09\u3002\u4E0A\u306E\u7406\u7531\u3092\u89E3\u6D88\u3057\u3066\u3084\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\u3044
|
|
32
|
+
`);return failure??EXIT_FAILURE}io.out(`\u53CD\u6620\u3057\u307E\u3057\u305F\uFF08\u4F5C\u6210 ${plan.creates.length} \u4EF6 / \u66F4\u65B0 ${plan.updates.length} \u4EF6\u30FB\u30D5\u30A1\u30A4\u30EB\u3068\u30B5\u30FC\u30D0\u306E\u5DEE\u52060\u3092\u78BA\u8A8D\uFF09
|
|
33
|
+
`);return EXIT_OK}function planOf(defs,server){const byId=new Map(server.map(s=>[str(s["id"]),s]));const plan={creates:[],updates:[],unchanged:0,onlyRemote:[]};const fileIds=new Set;for(const d of defs){const id=str(d["id"]);fileIds.add(id);const current=byId.get(id);if(current===void 0){plan.creates.push(d);continue}const a=comparable(current);const b=comparable(d);const keys=[...new Set([...Object.keys(a),...Object.keys(b)])].sort();const fields=keys.filter(k=>stableJson(a[k])!==stableJson(b[k])).
|
|
34
|
+
map(k=>({key:k,server:a[k],file:b[k]}));if(fields.length===0)plan.unchanged+=1;else plan.updates.push({def:d,revision:pickNumber(current,"revision"),fields})}plan.onlyRemote=[...byId.keys()].filter(id=>!fileIds.has(id)).sort();return plan}function comparable(def){const out={};for(const[k,v]of Object.entries(def)){if(k.startsWith("_")||SERVER_META_KEYS.has(k))continue;out[k]=v}for(const[k,v]of Object.entries(SERVER_DEFAULTS))if(!(k in out))out[k]=v;const when=out["when"];if(when&&typeof when==="o\
|
|
35
|
+
bject"&&!Array.isArray(when))out["when"]=normalizeWhen(when);return out}function normalizeWhen(when){const type=(typeof when["type"]==="string"?when["type"]:"daily").toLowerCase();if(!["daily","weekly","monthly","interval"].includes(type))return{...when,type};if(type==="interval")return{type,every_hours:when["every_hours"]??24};const out={type,after:typeof when["after"]==="string"?when["after"]:"00:00"};if(type==="weekly")out["days"]=Array.isArray(when["days"])?when["days"].map(d=>String(d).toLowerCase()):
|
|
36
|
+
[];if(type==="monthly"){const day=when["day"];out["day"]=typeof day==="string"&&/^\d+$/.test(day)?Number(day):day}return out}function payloadOf(def){const out={};for(const[k,v]of Object.entries(def)){if(k.startsWith("_")||SERVER_META_KEYS.has(k))continue;out[k]=v}return out}function definitionsOf(parsed,file,io){let list2;if(Array.isArray(parsed)){list2=parsed}else if(parsed&&typeof parsed==="object"&&"schedules"in parsed){const unknownKeys=Object.keys(parsed).filter(k=>!k.startsWith("_")&&!FILE_TOP_KEYS.
|
|
37
|
+
has(k));if(unknownKeys.length>0){io.err(`${file} \u306E\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306B\u77E5\u3089\u306A\u3044\u30AD\u30FC\u304C\u3042\u308A\u307E\u3059: ${unknownKeys.join(", ")}
|
|
38
|
+
`);return null}list2=parsed["schedules"]}else if(parsed&&typeof parsed==="object"&&"id"in parsed){list2=[parsed]}else{io.err(`${file} \u306B\u5B9A\u7FA9\u304C\u3042\u308A\u307E\u305B\u3093\uFF08{ "schedules": [...] }\u30FB\u5B9A\u7FA91\u4EF6\u30FB\u5B9A\u7FA9\u306E\u914D\u5217\u306E\u3044\u305A\u308C\u304B\uFF09
|
|
39
|
+
`);return null}if(!Array.isArray(list2)){io.err(`${file} \u306E schedules \u304C\u914D\u5217\u3067\u306F\u3042\u308A\u307E\u305B\u3093
|
|
40
|
+
`);return null}const seen=new Set;const out=[];for(const[i,d]of list2.entries()){if(!d||typeof d!=="object"||Array.isArray(d)){io.err(`${file} \u306E ${i+1} \u4EF6\u76EE\u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093
|
|
41
|
+
`);return null}const id=d["id"];if(typeof id!=="string"||!SCHEDULE_ID.test(id)){io.err(`${file} \u306E ${i+1} \u4EF6\u76EE\u306E id \u304C\u4E0D\u6B63\u3067\u3059\uFF08\u82F1\u5C0F\u6587\u5B57\u30FB\u6570\u5B57\u30FB. _ - \u306E64\u5B57\u4EE5\u5185\uFF09: ${JSON.stringify(id??null)}
|
|
42
|
+
`);return null}if(seen.has(id)){io.err(`${file} \u306B\u540C\u3058 id \u304C2\u56DE\u3042\u308A\u307E\u3059: ${id}
|
|
43
|
+
`);return null}seen.add(id);out.push(d)}if(out.length===0){io.err(`${file} \u306B\u5B9A\u7FA9\u304C1\u4EF6\u3082\u3042\u308A\u307E\u305B\u3093
|
|
44
|
+
`);return null}return out}async function remove(api,opts,io){const id=opts.id??"";let expected;if(opts.revision!==void 0){if(!/^\d+$/.test(opts.revision)){io.err(`--revision \u306F0\u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${opts.revision}
|
|
45
|
+
`);return EXIT_USAGE}if(!opts.yes){io.err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u524A\u9664\u3057\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=Number(opts.revision)}if(!SCHEDULE_ID.test(id)){io.err(`\u5B9A\u7FA9ID\u306E\u5F62\u304C\u4E0D\u6B63\u3067\u3059\uFF08\u82F1\u5C0F\u6587\u5B57\u30FB\u6570\u5B57\u30FB. _ - \u306E64\u5B57\u4EE5\u5185\uFF09: ${id}
|
|
46
|
+
`);return EXIT_USAGE}const remote=await fetchRemote(api,io.err);if(typeof remote==="number")return remote;const current=remote.schedules.find(s=>str(s["id"])===id);if(current===void 0){io.err(`\u5B9A\u7FA9 ${id} \u306F\u30B5\u30FC\u30D0\u306B\u3042\u308A\u307E\u305B\u3093\uFF08\u524A\u9664\u3059\u308B\u3082\u306E\u306F\u3042\u308A\u307E\u305B\u3093\uFF09
|
|
47
|
+
`);return EXIT_FAILURE}const revision=pickNumber(current,"revision");if(revision===null){io.err(`\u26D4 \u5B9A\u7FA9 ${id} \u306E revision \u3092\u8AAD\u3081\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5F62\u304C\u5951\u7D04\u3068\u9055\u3044\u307E\u3059\uFF09
|
|
48
|
+
`);return EXIT_API_SERVER}io.out(`\u524A\u9664\u5BFE\u8C61\uFF08revision ${revision}\uFF09:
|
|
49
|
+
${row(current)}
|
|
50
|
+
`);if(!opts.yes){io.out(`
|
|
51
|
+
\u524A\u9664\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u524A\u9664\u3059\u308B\u3068\u3053\u306E\u67A0\u306F\u767A\u706B\u3057\u306A\u304F\u306A\u308A\u3001\u5B9A\u7FA9\u306F\u623B\u305B\u307E\u305B\u3093\uFF08\u6B62\u3081\u308B\u3060\u3051\u306A\u3089 enabled: false \u3092 push \u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\u524A\u9664\u3059\u308B\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08revision ${revision} \u3092\u9001\u308B\u306E\u3067\u3001\u305D\u306E\u5F8C\u30B5\u30FC\u30D0\u3067\u66F4\u65B0\u3055\u308C\u3066\u3044\u308C\u3070 409 \u3067\u6B62\u307E\u308A\u307E\u3059\uFF09:
|
|
52
|
+
${confirmCommand(opts,["delete",id],{revision})}
|
|
53
|
+
`);return EXIT_USAGE}const sent=expected??revision;const res=await api.request("DELETE",`/schedules/definitions/${encodeURIComponent(id)}?revision=${sent}`);if(!res.ok){if(res.status===409){const now=currentRevisionOf(res);io.err(`\u26D4 409: revision ${sent} \u3067\u9001\u308A\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u306F${now!==null?` revision ${now} \u306B`:""}\u66F4\u65B0\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u524A\u9664\u305B\u305A\u306B\u6B62\u3081\u307E\u3057\u305F\uFF08\u5185\u5BB9\u3092\u78BA\u8A8D\u3057\u3066\u304B\u3089\u3084\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09
|
|
54
|
+
`)}else{io.err(`\u26D4 \u5B9A\u7FA9\u3092\u524A\u9664\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
|
|
55
|
+
`)}return apiExit(res)}io.out(`\u524A\u9664\u3057\u307E\u3057\u305F: ${id}
|
|
56
|
+
`);return EXIT_OK}function configJson(remote){const obj={max_per_cycle:remote.maxPerCycle??null,gates:remote.gates??[],require_zero_statuses:remote.requireZeroStatuses??{}};return JSON.stringify(obj,null,2)+"\n"}async function configPull(api,opts,io){const remote=await fetchRemote(api,io.err);if(typeof remote==="number")return remote;const content=configJson(remote);if(opts.out===void 0){io.out(content);return EXIT_OK}const target=opts.out;if(io.exists(target)){let local;try{local=io.readFile(target)}catch(e){
|
|
57
|
+
io.err(`\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3081\u307E\u305B\u3093: ${target}\uFF08${e.message}\uFF09
|
|
58
|
+
`);return EXIT_FAILURE}if(local===content){io.out(`${target} \u306F\u30B5\u30FC\u30D0\uFF08revision ${remote.configRevision??"\u4E0D\u660E"}\uFF09\u3068\u540C\u3058\u3067\u3059\u3002\u5909\u66F4\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
|
|
59
|
+
`);return EXIT_OK}printDiff(io.out,target,`\u30B5\u30FC\u30D0\uFF08revision ${remote.configRevision??"\u4E0D\u660E"}\uFF09`,local,content);if(!opts.yes){io.out(`
|
|
60
|
+
${target} \u3092\u4E0A\u66F8\u304D\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u4E0A\u66F8\u304D\u3059\u308B\u306B\u306F --yes \u3092\u4ED8\u3051\u3066\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
61
|
+
`);return EXIT_USAGE}}try{io.writeFile(target,content)}catch(e){io.err(`\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093: ${target}\uFF08${e.message}\uFF09
|
|
62
|
+
`);return EXIT_FAILURE}io.out(`${target} \u306B\u5C55\u958B\u3057\u307E\u3057\u305F\uFF08revision ${remote.configRevision??"\u4E0D\u660E"}\uFF09\u3002
|
|
63
|
+
`);return EXIT_OK}async function configPush(api,opts,io){const file=opts.file??"";let expected;if(opts.revision!==void 0){if(!/^\d+$/.test(opts.revision)){io.err(`--revision \u306F0\u4EE5\u4E0A\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${opts.revision}
|
|
64
|
+
`);return EXIT_USAGE}if(!opts.yes){io.err("--revision \u306F --yes \u3068\u4E00\u7DD2\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08--yes \u306A\u3057\u3067\u306F\u767B\u9332\u3057\u307E\u305B\u3093\uFF09\n");return EXIT_USAGE}expected=Number(opts.revision)}const parsed=readJsonFile(file,io);if(parsed===null)return EXIT_USAGE;if(Array.isArray(parsed)||typeof parsed!=="object"){io.err(`${file} \u306F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF08{ "max_per_cycle": \u2026, "gates": [...] }\uFF09\u3067\u306F\u3042\u308A\u307E\u305B\u3093
|
|
65
|
+
`);return EXIT_USAGE}const local=parsed;const unknownKeys=Object.keys(local).filter(k=>!k.startsWith("_")&&!FILE_TOP_KEYS.has(k));if(unknownKeys.length>0){io.err(`${file} \u306E\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306B\u77E5\u3089\u306A\u3044\u30AD\u30FC\u304C\u3042\u308A\u307E\u3059: ${unknownKeys.join(", ")}
|
|
66
|
+
`);return EXIT_USAGE}if(!("max_per_cycle"in local)){io.err(`${file} \u306B max_per_cycle \u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A\u306E\u5FC5\u9808\u9805\u76EE\u3067\u3059\uFF09
|
|
67
|
+
`);return EXIT_USAGE}const remote=await fetchRemote(api,io.err);if(typeof remote==="number")return remote;if(remote.configRevision===null){io.err("\u26D4 \u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A\u306E revision \u3092\u8AAD\u3081\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E config_meta.revision \u304C\u7121\u3044\uFF09\n");return EXIT_API_SERVER}const body={max_per_cycle:local["max_per_cycle"],gates:"gates"in local?local["gates"]:remote.gates??[]};if("require_zero_statuses"in local)body["require_z\
|
|
68
|
+
ero_statuses"]=local["require_zero_statuses"];const kept=CONFIG_KEYS.filter(k=>!(k in local));if(kept.length>0)io.out(`\uFF08\u30D5\u30A1\u30A4\u30EB\u306B\u7121\u3044\u305F\u3081\u73FE\u5728\u5024\u3092\u4FDD\u3061\u307E\u3059: ${kept.join(", ")}\uFF09
|
|
69
|
+
`);if("schedules"in local)io.err("\uFF08\u30D5\u30A1\u30A4\u30EB\u306E\u5B9A\u7FA9\u306F\u9001\u308A\u307E\u305B\u3093\u3002\u9001\u308B\u306B\u306F schedule push \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\uFF09\n");const before=configJson(remote);const after=JSON.stringify({max_per_cycle:body["max_per_cycle"]??null,gates:body["gates"]??[],require_zero_statuses:"require_zero_statuses"in body?body["require_zero_statuses"]:remote.requireZeroStatuses??{}},null,2)+"\n";if(stableJson(JSON.parse(
|
|
70
|
+
before))===stableJson(JSON.parse(after))){io.out(`\u5DEE\u5206\u306F\u3042\u308A\u307E\u305B\u3093\uFF08revision ${remote.configRevision}\uFF09\u3002\u767B\u9332\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002
|
|
71
|
+
`);return EXIT_OK}printDiff(io.out,`\u30B5\u30FC\u30D0\uFF08revision ${remote.configRevision}\uFF09`,file,before,after);const revision=expected??remote.configRevision;if(!opts.yes){io.out(`
|
|
72
|
+
\u767B\u9332\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u3053\u306E\u5DEE\u5206\u3067\u78BA\u5B9A\u3059\u308B\u306B\u306F\u6B21\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08revision ${remote.configRevision} \u3092\u9001\u308B\u306E\u3067\u3001\u305D\u306E\u5F8C\u30B5\u30FC\u30D0\u304C\u66F4\u65B0\u3055\u308C\u3066\u3044\u308C\u3070 409 \u3067\u6B62\u307E\u308A\u307E\u3059\uFF09:
|
|
73
|
+
${confirmCommand(opts,["config","push"],{file,revision:remote.configRevision})}
|
|
74
|
+
`);return EXIT_USAGE}const res=await api.request("PUT","/schedules/config",{...body,revision});if(!res.ok){if(res.status===409){const now=currentRevisionOf(res);io.err(`\u26D4 409: revision ${revision} \u3067\u9001\u308A\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u306F${now!==null?` revision ${now} \u306B`:""}\u66F4\u65B0\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u753B\u9762\u3067\u7DE8\u96C6\u3055\u308C\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u4E0A\u66F8\u304D\u305B\u305A\u306B\u6B62\u3081\u307E\u3057\u305F\uFF08\u5DEE\u5206\u3092\u78BA\u8A8D\u3057\u3066\u304B\u3089\u3084\u308A\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF09
|
|
75
|
+
`)}else{io.err(`\u26D4 \u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A\u3092\u767B\u9332\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
|
|
76
|
+
`)}return apiExit(res)}const saved=parseRemote(res);if(saved===null||saved.configRevision===null){io.err(`\u26A0\uFE0F \u5FDC\u7B54\u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\u3002\u53CD\u6620\u3055\u308C\u305F\u304B\u3092 schedule config pull \u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
|
|
77
|
+
`);return EXIT_API_SERVER}io.out(`\u767B\u9332\u3057\u307E\u3057\u305F: revision ${saved.configRevision}
|
|
78
|
+
`);return EXIT_OK}async function fetchRemote(api,err){const res=await api.request("GET","/schedules/definitions");if(!res.ok){err(`\u26D4 \u5B9A\u671F\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u306E\u5B9A\u7FA9\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF08${errorDetail(res)}\uFF09
|
|
79
|
+
`);return apiExit(res)}const remote=parseRemote(res);if(remote===null){err(`\u26D4 \u5B9A\u7FA9\u306E\u5FDC\u7B54\u306B schedules \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u5FDC\u7B54\u306E\u5148\u982D: ${res.raw.slice(0,120)}\uFF09
|
|
80
|
+
`);return EXIT_API_SERVER}return remote}function parseRemote(res){const json=res.json??{};const data=json["data"];const b=data&&typeof data==="object"&&!Array.isArray(data)&&("schedules"in data||"config_meta"in data)?data:json;const schedules=b["schedules"];const meta=b["config_meta"];if(!Array.isArray(schedules)&&!(meta&&typeof meta==="object"))return null;const warnings=Array.isArray(b["warnings"])?b["warnings"].map(w=>w&&typeof w==="object"?str(w["message"]):str(w)).filter(m=>m!==""):[];return{
|
|
81
|
+
schedules:Array.isArray(schedules)?schedules.filter(s=>!!s&&typeof s==="object"&&!Array.isArray(s)):[],maxPerCycle:b["max_per_cycle"],gates:b["gates"],requireZeroStatuses:b["require_zero_statuses"],configRevision:meta&&typeof meta==="object"?pickNumber(meta,"revision"):null,canWrite:typeof b["can_write"]==="boolean"?b["can_write"]:null,warnings}}function readJsonFile(file,io){let raw;try{raw=io.readFile(file)}catch(e){io.err(`\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3081\u307E\u305B\u3093: ${file}\uFF08${e.
|
|
82
|
+
message}\uFF09
|
|
83
|
+
`);return null}try{return JSON.parse(raw)}catch(e){io.err(`${file} \u3092 JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093\uFF08${e.message}\uFF09
|
|
84
|
+
`);return null}}function parseRevisionMap(raw){const map=new Map;for(const part of raw.split(",")){const m=/^([^=]+)=(\d+)$/.exec(part);if(m===null)return null;const id=m[1];if(!SCHEDULE_ID.test(id)||map.has(id))return null;map.set(id,Number(m[2]))}return map}function stableJson(v){if(Array.isArray(v))return`[${v.map(stableJson).join(",")}]`;if(v&&typeof v==="object"){const entries=Object.entries(v).sort(([a],[b])=>a<b?-1:a>b?1:0);return`{${entries.map(([k,x])=>`${JSON.stringify(k)}:${stableJson(
|
|
85
|
+
x)}`).join(",")}}`}return JSON.stringify(v??null)}function str(v){if(v===null||v===void 0)return"";return typeof v==="string"?v:String(v)}function confirmCommand(opts,sub,extra={}){const parts=["twp task-loop schedule",...sub,"--project",shellQuote(opts.projectRef)];if(opts.profile!==void 0)parts.push("--profile",shellQuote(opts.profile));if(extra.file!==void 0)parts.push("--file",shellQuote(extra.file));parts.push("--yes");if(extra.revision!==void 0)parts.push("--revision",String(extra.revision));
|
|
86
|
+
return parts.join(" ")}export{comparable,describeWhen,runScheduleDefCommand,stableJson};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{nonEmpty,positiveInteger,shellQuote}from"./chunk-MI6HVYR2.js";import{repeatedValues}from"./chunk-RX5HWI4L.js";import"./chunk-HNG6MF26.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import"./chunk-II5RVJQN.js";import{isRecord}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";
|
|
4
|
+
import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u7D71\u5408\u691C\u7D22";var SEARCH_PATH="/api/v2/search/unified";var TYPES_PATH="/api/v2/search/types";var KEYWORD_MAX=200;var LIMIT_MAX=100;var SEARCH_MODE_LABEL={keyword:"\u901A\u5E38\u691C\u7D22",vector:"AI\u691C\u7D22"};var NEXT_COMMAND={task:(ref,row)=>`twp task get ${ref}${text(row["project_id"]).startsWith("private:")?" --project __private__":""}`,project:ref=>`twp project get ${ref}`,wiki:ref=>`twp wiki get ${ref}`,note:ref=>`twp note get ${ref}`,meeting_minutes:ref=>`twp me\
|
|
5
|
+
eting get ${ref}`,support:ref=>`twp support get ${ref}`,user:ref=>`twp user get ${ref}`};function keywordOf(input){if(input.args.length>1){throw new UsageError(`\u691C\u7D22\u3059\u308B\u8A9E\u306F1\u3064\u306E\u5F15\u6570\u3067\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5F15\u6570: ${input.args.join(" / ")}\uFF09`,'\u7A7A\u767D\u3092\u542B\u3080\u8A9E\u306F\u5F15\u7528\u7B26\u3067\u56F2\u307F\u307E\u3059: twp search "\u7D4C\u8CBB \u7CBE\u7B97"')}const keyword=(input.
|
|
6
|
+
args[0]??"").trim();if(keyword===""){throw new UsageError("\u691C\u7D22\u3059\u308B\u8A9E\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",'\u4F8B: twp search "\u7D4C\u8CBB\u7CBE\u7B97" / twp search "\u7D4C\u8CBB\u7CBE\u7B97" --ai')}if([...keyword].length>KEYWORD_MAX){throw new UsageError(`\u691C\u7D22\u3059\u308B\u8A9E\u306F ${String(KEYWORD_MAX)} \u6587\u5B57\u307E\u3067\u3067\u3059\uFF08${String([...keyword].length)} \u6587\u5B57\uFF09`)}return keyword}function typesOf(input){const types=[];
|
|
7
|
+
for(const raw of repeatedValues(input,"--type")){for(const part of raw.split(",")){const type=part.trim();if(type==="")throw new UsageError("--type \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093","\u7A2E\u985E\u306F twp search types \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002");if(!types.includes(type))types.push(type)}}return types}function limitOf(input){const limit=positiveInteger(input.flags,"--limit");if(limit!==void 0&&limit>LIMIT_MAX){throw new UsageError(`-\
|
|
8
|
+
-limit \u306F ${String(LIMIT_MAX)} \u307E\u3067\u3067\u3059\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${String(limit)}\uFF09`)}return limit}function tagsOf(input){const tags=[];for(const raw of repeatedValues(input,"--tag")){const tag=raw.trim();if(tag==="")throw new UsageError("--tag \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093");if(!tags.includes(tag))tags.push(tag)}return tags}async function resolveProjects(input,ctx){keywordOf(input);typesOf(input);limitOf(input);
|
|
9
|
+
tagsOf(input);const ids=[];for(const raw of repeatedValues(input,"--project")){const id=(await ctx.resolver.project(raw)).id;if(!ids.includes(id))ids.push(id)}return ids.length===0?input:withResolved(input,{projectIds:ids.join(",")})}function searchBody(input){const body={keyword:keywordOf(input)};const types=typesOf(input);if(types.length>0)body["types"]=types;const page=positiveInteger(input.flags,"--cursor");if(page!==void 0)body["page"]=page;const limit=limitOf(input);if(limit!==void 0)body["\
|
|
10
|
+
limit"]=limit;const status=nonEmpty(input.flags,"--status");const category=nonEmpty(input.flags,"--category");const projectIds=repeatedValues(input,"--project").length>0?requireResolved(input,"projectIds").split(","):[];const tags=tagsOf(input);if(status!==void 0||category!==void 0||projectIds.length>0||tags.length>0){body["filters"]={...status!==void 0?{status}:{},...category!==void 0?{category_code:category}:{},...projectIds.length>0?{project_id:projectIds}:{},...tags.length>0?{tags}:{}}}if(input.
|
|
11
|
+
flags.has("--ai"))body["use_vector_search"]=true;return body}function dataOf(body,what){if(!isRecord(body)||body["success"]!==true||!("data"in body)){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body["data"]}function searchData(body){const data=dataOf(body,LABEL);if(!isRecord(data)||!Array.isArray(data["results"])){throw new ApiResponseError(
|
|
12
|
+
`${LABEL}\u306E\u5FDC\u7B54\u306B results \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return data}function text(value){return typeof value==="string"?value:""}function refOf(row){const docType=text(row["doc_type"]);if(docType==="task"&&text(row["key"])!=="")return text(row["key"]);if(docType==="project"&&text(row["code"])!=="")return text(row["code"]);return text(row["id"])}function snippetOf(row){const highlights=isRecord(
|
|
13
|
+
row["highlights"])?row["highlights"]:{};for(const key of["search_text","content","description","title","file_name"]){const fragments=highlights[key];if(Array.isArray(fragments)){const joined=fragments.filter(f=>typeof f==="string").join(" \u2026 ");if(joined!=="")return oneLine(joined.replace(/<\/?(?:em|mark)>/g,""))}}return oneLine(text(row["snippet"]))}function oneLine(value){return value.replace(/\s+/g," ").trim()}function nextOf(row,ref){const build=NEXT_COMMAND[text(row["doc_type"])];if(build===
|
|
14
|
+
void 0||ref===""||!isSafePathSegment(ref)||/\s/.test(ref))return"";return build(ref,row)}function summarizeSearch(body){return searchData(body)["results"].map(item=>{const row=isRecord(item)?item:{};const ref=refOf(row);return{doc_type:row["doc_type"]??null,ref,title:row["title"]??null,project_name:row["project_name"]??null,updated_at:row["updated_at"]??null,snippet:snippetOf(row),next:nextOf(row,ref)}})}function searchNotes(body,input){const data=searchData(body);const mode=text(data["search_mo\
|
|
15
|
+
de"]);const notes=[`\u691C\u7D22\u65B9\u5F0F: ${mode===""?"(\u4E0D\u660E)":`${mode}\uFF08${SEARCH_MODE_LABEL[mode]??mode}\uFF09`}`];const skipped=data["total"]===0&&data["total_pages"]===0;if(input.flags.has("--ai")&&mode!=="vector"&&!skipped){notes.push("\u6CE8\u8A18: --ai \u3092\u6307\u5B9A\u3057\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u306F AI\u691C\u7D22\u3067\u306F\u306A\u304F\u4E0A\u306E\u65B9\u5F0F\u3067\u691C\u7D22\u3057\u307E\u3057\u305F\uFF08AI\u691C\u7D22\u304C\u4F7F\u3048\u306A\u3044\u72B6\u614B\u306E\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\uFF09\u3002")}
|
|
16
|
+
const total=data["total"];const page=data["page"];const totalPages=data["total_pages"];if(typeof total==="number"&&Number.isInteger(page)&&Number.isInteger(totalPages)){notes.push(`\u8A72\u5F53 ${String(total)} \u4EF6\uFF08${String(page)} / ${String(totalPages)} \u30DA\u30FC\u30B8\uFF09`);if(page<totalPages){notes.push(`\u7D9A\u304D\u304C\u3042\u308A\u307E\u3059: ${nextPageLine(input,page+1)}`)}else if(totalPages>0&&page>totalPages){notes.push(`\u30DA\u30FC\u30B8 ${String(page)} \u306F\u7BC4\u56F2\u5916\u3067\u3059\uFF08\u5168 ${String(
|
|
17
|
+
totalPages)} \u30DA\u30FC\u30B8\uFF09\u3002--cursor \u3092 ${String(totalPages)} \u4EE5\u4E0B\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}}if(typeof total==="number"&&total>0&&data["results"].length===0&&page<=totalPages){notes.push("\u6CE8\u8A18: \u3053\u306E\u30DA\u30FC\u30B8\u306E\u7D50\u679C\u306F\u3001\u95B2\u89A7\u3067\u304D\u306A\u3044\u3082\u306E\u3092\u9664\u3044\u305F\u7D50\u679C0\u4EF6\u306B\u306A\u308A\u307E\u3057\u305F\u3002\u7D9A\u304D\u306E\u30DA\u30FC\u30B8\u306B\u306F\u7D50\u679C\u304C\u3042\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002")}
|
|
18
|
+
return notes}function nextPageLine(input,page){const keyword=input.args[0]??"";const parts=[OPERATION_WORDS.has(keyword)?"twp search query":"twp search"];const dashed=keyword.startsWith("-");if(!dashed)parts.push(shellQuote(keyword));if(input.flags.has("--ai"))parts.push("--ai");for(const type of typesOf(input))parts.push("--type",shellQuote(type));for(const project of repeatedValues(input,"--project"))parts.push("--project",shellQuote(project));for(const tag of tagsOf(input))parts.push("--tag",
|
|
19
|
+
shellQuote(tag));for(const name of["--status","--category","--limit"]){const value=input.flags.get(name);if(value!==void 0)parts.push(name,shellQuote(value))}parts.push("--cursor",String(page));if(dashed)parts.push("--",shellQuote(keyword));return parts.join(" ")}var OPERATION_WORDS=new Set(["query","types","help"]);function typeRows(body){const data=dataOf(body,"\u691C\u7D22\u3067\u304D\u308B\u7A2E\u985E");if(!isRecord(data)){throw new ApiResponseError("\u691C\u7D22\u3067\u304D\u308B\u7A2E\u985E\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
|
|
20
|
+
return Object.entries(data).map(([docType,spec])=>({doc_type:docType,label:isRecord(spec)?text(spec["label"]):""}))}var queryOperation={name:"query",summary:"TWP \u5185\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u6A2A\u65AD\u3057\u3066\u691C\u7D22\u3059\u308B\uFF08twp search <\u8A9E> \u3068\u540C\u3058\u30FB--ai \u3067 AI\u691C\u7D22\uFF09",usage:"twp search <\u8A9E> [--ai] [--type <\u7A2E\u985E>[,<\u7A2E\u985E>...]] [--project <\u30B3\u30FC\u30C9|ID> ...] [--tag <\u30BF\u30B0> ...] [--status <\u72B6\u614B>] [--category <\u30AB\u30C6\u30B4\u30EA\u30B3\u30FC\u30C9>] [--limit <\u4EF6\u6570>] [--cursor\
|
|
21
|
+
<\u30DA\u30FC\u30B8\u756A\u53F7>]",description:'\u30BF\u30B9\u30AF\u30FBWiki\u30FB\u30CE\u30FC\u30C8\u30FB\u8B70\u4E8B\u9332\u30FBFAQ\u30FB\u30B5\u30DD\u30FC\u30C8\u30FB\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u7B49\u3092\u6A2A\u65AD\u3057\u3066\u691C\u7D22\u3057\u307E\u3059\uFF08\u753B\u9762\u306E\u30CA\u30D3\u30D0\u30FC\u691C\u7D22\u3068\u540C\u3058 API\uFF09\u3002\n`twp search <\u8A9E>` \u306F `twp search query <\u8A9E>` \u3068\u540C\u3058\u3067\u3059\uFF08\u300Ctypes\u300D\u306A\u3069\u64CD\u4F5C\u540D\u3068\u540C\u3058\u8A9E\u3092\u691C\u7D22\u3057\u305F\u3044\u3068\u304D\u306F query \u3092\u4ED8\u3051\u307E\u3059\uFF09\u3002\n\n --ai \u3092\u4ED8\u3051\u308B\u3068 AI\u691C\u7D22\uFF08\u610F\u5473\u306E\u8FD1\u3044\u3082\u306E\u3092\u63A2\u3059\uFF09\u306B\u306A\u308A\u307E\u3059\u3002\u4F7F\u3063\u305F\u65B9\u5F0F\u306F stderr \u306E\u300C\u691C\u7D22\u65B9\u5F0F\u300D\u306B\u51FA\u307E\u3059\u3002\n --type \u306E\u5024\u306F twp search types \u306E doc_type \u3067\u3059\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30FB\u8907\u6570\u6307\u5B9A\u53EF\uFF09\u3002\u7701\u7565\u6642\u306F\u898B\u3066\u3088\u3044\u5168\u7A2E\u985E\u304C\u5BFE\u8C61\u3067\u3059\u3002\n --project\uFF08\u30B3\u30FC\u30C9\u30FBID\uFF09\u3068 --tag \u3067\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30FB\u30BF\u30B0\u5358\u4F4D\u306B\u7D5E\u308A\u8FBC\u3081\u307E\u3059\uFF08\u8907\u6570\u6307\u5B9A\u306F\u3044\u305A\u308C\u304B\u306B\u4E00\u81F4\uFF09\u3002\n \u4F8B: twp search "\u969C\u5BB3\u5BFE\u5FDC" --type wiki --project FMID --tag \u904B\u7528\n \u95B2\u89A7\u6A29\u9650\u306E\u7121\u3044\u7A2E\u985E\u30FB\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306F\u30B5\u30FC\u30D0\u304C\u9664\u304D\u307E\u3059\u3002\n\n--output \
|
|
22
|
+
table / tsv / text \u306F\u8981\u7D04\u5217\uFF08doc_type / ref / title / project_name / updated_at / snippet / next\uFF09\u3067\u3059\u3002\nref \u306F\u30BF\u30B9\u30AF\u306A\u3089\u30AD\u30FC\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306A\u3089\u30B3\u30FC\u30C9\u30FB\u305D\u308C\u4EE5\u5916\u306F ID\u3001next \u306F\u8A73\u7D30\u3092\u53D6\u308B\u30B3\u30DE\u30F3\u30C9\u3067\u3059\uFF08\u53D6\u5F97\u30B3\u30DE\u30F3\u30C9\u304C\u3042\u308B\u7A2E\u985E\u3060\u3051\uFF09\u3002\n--output json \u306F\u5FDC\u7B54\u306E data\uFF08results\u30FBtotal\u30FBpage\u30FBtotal_pages\u30FBsearch_mode \u7B49\uFF09\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\u3002\n\n\u30DA\u30FC\u30B8: --cursor \u306F\u30DA\u30FC\u30B8\u756A\u53F7\uFF081\u59CB\u307E\u308A\uFF09\u3067\u3059\u3002\u7D9A\u304D\u304C\u3042\u308B\u3068\u304D\u306F\u6B21\u306B\u6253\u3064\u884C\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\uFF08--all \u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n\u691C\u7D22\u30B5\u30FC\u30D3\u30B9\u304C\u4E00\u6642\u7684\u306B\u4F7F\u3048\u306A\u3044\u3068\u304D\u306F\u7D42\u4E86\u30B3\u30FC\u30C9 4 \u3067\u5931\u6557\u3057\u307E\u3059\uFF080\u4EF6\u3068\u306F\u533A\u5225\u3055\u308C\u307E\u3059\uFF09\u3002',
|
|
23
|
+
flags:[{name:"--ai",summary:"AI\u691C\u7D22\uFF08\u610F\u5473\u691C\u7D22\uFF09\u306B\u3059\u308B",takesValue:false},{name:"--type",summary:"\u691C\u7D22\u3059\u308B\u7A2E\u985E\uFF08doc_type\u30FB\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30FB\u8907\u6570\u6307\u5B9A\u53EF\uFF09",takesValue:true,placeholder:"<\u7A2E\u985E>",repeatable:true},{name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u30B3\u30FC\u30C9\u30FBID\u30FB\u8907\u6570\u6307\u5B9A\u53EF\uFF09",
|
|
24
|
+
takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>",repeatable:true},{name:"--tag",summary:"\u30BF\u30B0\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u8907\u6570\u6307\u5B9A\u53EF\u30FB\u3044\u305A\u308C\u304B\u306B\u4E00\u81F4\uFF09",takesValue:true,placeholder:"<\u30BF\u30B0>",repeatable:true},{name:"--status",summary:"\u72B6\u614B\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u72B6\u614B>"},{name:"--category",summary:"\u30AB\u30C6\u30B4\u30EA\u30B3\u30FC\u30C9\u3067\u7D5E\u308A\u8FBC\u3080",
|
|
25
|
+
takesValue:true,placeholder:"<\u30AB\u30C6\u30B4\u30EA\u30B3\u30FC\u30C9>"},{name:"--limit",summary:`1\u30DA\u30FC\u30B8\u306E\u4EF6\u6570\uFF08\u65E2\u5B9A 20\u30FB\u6700\u5927 ${String(LIMIT_MAX)}\uFF09`,takesValue:true,placeholder:"<\u4EF6\u6570>"},{name:"--cursor",summary:"\u53D6\u5F97\u3059\u308B\u30DA\u30FC\u30B8\u756A\u53F7\uFF08\u300C\u7D9A\u304D\u304C\u3042\u308A\u307E\u3059\u300D\u306E\u6848\u5185\u306B\u51FA\u308B\u5024\u30FB1\u59CB\u307E\u308A\uFF09",takesValue:true,placeholder:"<\u30DA\u30FC\u30B8\
|
|
26
|
+
\u756A\u53F7>"}],rejected:server=>/types/.test(server)?"\u691C\u7D22\u3067\u304D\u308B\u7A2E\u985E\u306F twp search types \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002":void 0,prepare:resolveProjects,plan:input=>({method:"POST",path:SEARCH_PATH,body:searchBody(input)}),summarize:summarizeSearch,raw:body=>searchData(body),notes:searchNotes};var typesOperation={name:"types",summary:"\u691C\u7D22\u3067\u304D\u308B\u7A2E\u985E\uFF08doc_type \u3068\u30E9\u30D9\u30EB\uFF09\u3092\u4E00\u89A7\u3059\u308B",
|
|
27
|
+
usage:"twp search types",description:"twp search --type \u306B\u6E21\u305B\u308B\u5024\u306E\u4E00\u89A7\u3067\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u5168\u7A2E\u985E\u3092\u8FD4\u3057\u307E\u3059\uFF08\u95B2\u89A7\u6A29\u9650\u306E\u7121\u3044\u7A2E\u985E\u306F\u691C\u7D22\u3057\u3066\u3082\u7D50\u679C\u304C\u51FA\u307E\u305B\u3093\uFF09\u3002\n--output json \u3082 doc_type \u3068 label \u3060\u3051\u3067\u3059\uFF08\u30B5\u30FC\u30D0\u306E\u5FDC\u7B54\u306B\u542B\u307E\u308C\u308B\u5185\u90E8\u8A2D\u5B9A\u306F\u51FA\u3057\u307E\u305B\u3093\uFF09\u3002",
|
|
28
|
+
flags:[],plan:input=>{if(input.args.length>0){throw new UsageError(`types \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,"\u300Ctypes\u300D\u3068\u3044\u3046\u8A9E\u3092\u691C\u7D22\u3059\u308B\u306A\u3089 twp search query types")}return{method:"GET",path:TYPES_PATH}},summarize:typeRows,raw:typeRows};var searchDomain={name:"search",summary:`TWP \u5185\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u306E${LABEL}\uFF08\u901A\u5E38\u691C\u7D22\u30FBAI\u691C\u7D22\uFF09`,
|
|
29
|
+
operations:[queryOperation,typesOperation],defaultOperation:"query"};export{searchDomain};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{LoopSettingsApplier,PROMPT_KEYS,formatConfigHash,parseServerSettings,renderStepBudget}from"./chunk-
|
|
3
|
+
import{LoopSettingsApplier,PROMPT_KEYS,formatConfigHash,parseServerSettings,renderStepBudget}from"./chunk-BRE7D5AY.js";import"./chunk-5KAWCLYN.js";import"./chunk-LJVAOWZI.js";import"./chunk-G4TZFGNN.js";import"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-GY7KI5E5.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";
|
|
4
4
|
import"./chunk-VSJBJXZO.js";export{LoopSettingsApplier,PROMPT_KEYS,formatConfigHash,parseServerSettings,renderStepBudget};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{ServerSkillCatalog,applyArguments,expandServerSkills,formatSkillOrigins,parseSkillBody,parseSkillList,prepareSkillOverlay,referencedSkills,stripFrontmatter}from"./chunk-DLY2IN3G.js";import"./chunk-RRHAX7RK.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import"./chunk-5KAWCLYN.js";import"./chunk-GY7KI5E5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{ServerSkillCatalog,applyArguments,expandServerSkills,formatSkillOrigins,parseSkillBody,parseSkillList,prepareSkillOverlay,referencedSkills,stripFrontmatter};
|