approval-box 0.1.5 → 0.1.7
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/dist/cli.mjs +25 -5
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -15641,7 +15641,7 @@ import { existsSync as existsSync5, readFileSync as readFileSync5 } from "node:f
|
|
|
15641
15641
|
import { basename as basename2, join as join5 } from "node:path";
|
|
15642
15642
|
|
|
15643
15643
|
// src/version.ts
|
|
15644
|
-
var VERSION = true ? "0.1.
|
|
15644
|
+
var VERSION = true ? "0.1.7" : "0.0.0-dev";
|
|
15645
15645
|
function osName() {
|
|
15646
15646
|
return process.platform === "darwin" ? "macos" : process.platform === "win32" ? "windows" : process.platform;
|
|
15647
15647
|
}
|
|
@@ -15658,7 +15658,7 @@ function harnessOf(clientName) {
|
|
|
15658
15658
|
}
|
|
15659
15659
|
var INSTRUCTIONS = [
|
|
15660
15660
|
"Approval Box\u306F\u3001\u5229\u7528\u8005\uFF08\u4EBA\u9593\uFF09\u306E\u5224\u65AD\u30FB\u627F\u8A8D\u30FB\u64CD\u4F5C\u304C\u8981\u308B\u6642\u306B\u4F7F\u3046\u3002URL\u3092\u958B\u3044\u3066\u306E\u627F\u8A8D\u3084\u3001\u5229\u7528\u8005\u306E\u624B\u3067\u884C\u3046\u4F5C\u696D\u3092\u983C\u3080\u6642\u3082\u542B\u3080\u3002\u305D\u306E\u6642\u306F request_decision \u3067\u3082\u7533\u8ACB\u3059\u308B\u3002\u5229\u7528\u8005\u304C\u7533\u8ACB\u306B\u6C17\u3065\u304D\u3084\u3059\u3044\u306E\u3067\u3001\u5F37\u304F\u63A8\u5968\u3059\u308B\u3002\u7B54\u3048\u306F\u5229\u7528\u8005\u304C\u30B9\u30DE\u30DB\u3084Web\u3067\u51FA\u3057\u3001\u3053\u306E\u4F1A\u8A71\u3078\u81EA\u52D5\u3067\u5C4A\u304F\u3002",
|
|
15661
|
-
"\
|
|
15661
|
+
"request_decision \u3092\u547C\u3076\u3068\u3001\u7533\u8ACB\u306F\u3059\u3050\u306B\u306F\u53D7\u3051\u4ED8\u3051\u3089\u308C\u305A\u3001\u81EA\u5206\u306E\u7533\u8ACB\u306E\u4E00\u89A7\u3068 check_token \u304C\u8FD4\u308B\u3002\u4E00\u89A7\u3092\u898B\u3066\u3001\u5185\u5BB9\u304C\u5909\u308F\u3063\u305F\u7533\u8ACB\u306F amend_decision\u3001\u8981\u3089\u306A\u304F\u306A\u3063\u305F\u7533\u8ACB\u306F cancel_decision \u3067\u5148\u306B\u6E08\u307E\u305B\u308B\u3002\u7B54\u3048\u304C\u51FA\u3066\u3044\u308C\u3070\u3001\u305D\u306E\u7B54\u3048\u306B\u5F93\u3046\u3002\u554F\u984C\u304C\u7121\u3051\u308C\u3070\u3001\u540C\u3058\u7533\u8ACB\u306B check_token \u3092\u4ED8\u3051\u3066\u51FA\u3057\u76F4\u3059\u3068\u53D7\u3051\u4ED8\u3051\u3089\u308C\u308B\u3002",
|
|
15662
15662
|
"\u7533\u8ACB\u3057\u305F\u3089\u7B54\u3048\u3092\u5F85\u3063\u3066\u4F55\u5EA6\u3082\u547C\u3070\u306A\u3044\u3002\u7B54\u3048\u306F\u5C4A\u304F\u306E\u3067\u3001\u4ED6\u306E\u4F5C\u696D\u3092\u7D9A\u3051\u308B\u304B\u30BF\u30FC\u30F3\u3092\u7D42\u3048\u3066\u3088\u3044\u3002",
|
|
15663
15663
|
"\u5229\u7528\u8005\u306B\u300CApproval Box\u306Esetup_test\u3092\u5B9F\u884C\u3057\u3066\u300D\u3068\u8A00\u308F\u308C\u305F\u3089 setup_test \u3092\u547C\u3076\u3002\u5C4A\u3044\u305F\u7B54\u3048\u306B\u66F8\u304B\u308C\u305F\u78BA\u8A8D\u30B3\u30FC\u30C9\u3067 confirm_setup_test \u3092\u547C\u3076\u3002"
|
|
15664
15664
|
].join("\n");
|
|
@@ -15671,7 +15671,7 @@ var TOOLS = [
|
|
|
15671
15671
|
},
|
|
15672
15672
|
{
|
|
15673
15673
|
name: "request_decision",
|
|
15674
|
-
description: "\u5229\u7528\u8005\u306B\u5224\u65AD\u3092\u7533\u8ACB\u3059\u308B\
|
|
15674
|
+
description: "\u5229\u7528\u8005\u306B\u5224\u65AD\u3092\u7533\u8ACB\u3059\u308B\u30021\u56DE\u76EE\u306F\u53D7\u3051\u4ED8\u3051\u305A\u3001\u81EA\u5206\u306E\u7533\u8ACB\u306E\u4E00\u89A7\u3068 check_token \u3092\u8FD4\u3059\u3002\u76F4\u3059\u30FB\u53D6\u308A\u4E0B\u3052\u308B\u7533\u8ACB\u304C\u7121\u3044\u304B\u78BA\u304B\u3081\u3001\u8981\u308C\u3070 amend_decision\u30FBcancel_decision \u3092\u6E08\u307E\u305B\u3066\u304B\u3089\u3001check_token \u3092\u4ED8\u3051\u3066\u540C\u3058\u7533\u8ACB\u3092\u51FA\u3057\u76F4\u3059\u3002\u7B54\u3048\u306F\u3053\u306E\u4F1A\u8A71\u3078\u81EA\u52D5\u3067\u5C4A\u304F\u306E\u3067\u3001\u5F85\u3063\u3066\u4F55\u5EA6\u3082\u547C\u3070\u306A\u3044\u3002\u540C\u3058\u4EF6\u540D\u306E\u672A\u6C7A\u304C\u3042\u308B\u3068 duplicate_suspected \u3067\u65AD\u3089\u308C\u308B\u3002",
|
|
15675
15675
|
inputSchema: {
|
|
15676
15676
|
type: "object",
|
|
15677
15677
|
properties: {
|
|
@@ -15682,7 +15682,8 @@ var TOOLS = [
|
|
|
15682
15682
|
urgency: { type: "string", enum: ["low", "normal", "high"] },
|
|
15683
15683
|
deadline: { type: "string", description: "\u671F\u9650\uFF08ISO 8601\uFF09" },
|
|
15684
15684
|
session_label: { type: "string", description: "\u3069\u306E\u4F5C\u696D\u306E\u8A71\u304B\uFF08\u4F8B: \u30EA\u30DD\u30B8\u30C8\u30EA\u540D / \u4F5C\u696D\u540D\uFF09\u3002\u7701\u7565\u3059\u308B\u3068\u4F5C\u696D\u30D5\u30A9\u30EB\u30C0\u540D" },
|
|
15685
|
-
distinct_reason: { type: "string", description: "\u540C\u3058\u4EF6\u540D\u306E\u672A\u6C7A\u304C\u3042\u308B\u306E\u306B\u5225\u4EF6\u3068\u3057\u3066\u51FA\u3059\u6642\u3060\u3051\u3001\u305D\u306E\u7406\u7531" }
|
|
15685
|
+
distinct_reason: { type: "string", description: "\u540C\u3058\u4EF6\u540D\u306E\u672A\u6C7A\u304C\u3042\u308B\u306E\u306B\u5225\u4EF6\u3068\u3057\u3066\u51FA\u3059\u6642\u3060\u3051\u3001\u305D\u306E\u7406\u7531" },
|
|
15686
|
+
check_token: { type: "string", description: "1\u56DE\u76EE\u306E request_decision \u3067\u8FD4\u3063\u305F\u78BA\u8A8D\u306E\u672D\u3002\u4E00\u89A7\u3092\u78BA\u304B\u3081\u3001\u76F4\u3059\u30FB\u53D6\u308A\u4E0B\u3052\u308B\u7533\u8ACB\u304C\u7121\u3044\u3068\u5224\u65AD\u3057\u305F\u6642\u306B\u4ED8\u3051\u308B" }
|
|
15686
15687
|
},
|
|
15687
15688
|
required: ["title", "options"],
|
|
15688
15689
|
additionalProperties: false
|
|
@@ -15821,7 +15822,7 @@ function text(value, structured, isError = false) {
|
|
|
15821
15822
|
function describe(items) {
|
|
15822
15823
|
if (!items.length) return "\u3053\u306E\u7AEF\u672B\u304B\u3089\u51FA\u3057\u305F\u7533\u8ACB\u306F\u3042\u308A\u307E\u305B\u3093\u3002";
|
|
15823
15824
|
return items.map((d) => {
|
|
15824
|
-
const parts = [`- ${d.decision_id}\u300C${d.title}\u300D status=${d.status} version=${d.version}${d.this_session ? " (\u3053\u306E\u4F1A\u8A71)" : ""}`];
|
|
15825
|
+
const parts = [`- ${d.decision_id}\u300C${d.title}\u300D status=${d.status} version=${d.version} \u4F5C\u696D=${d.session_label}${d.this_session ? " (\u3053\u306E\u4F1A\u8A71)" : ""}`];
|
|
15825
15826
|
if (d.answer_text) parts.push(` \u7B54\u3048: ${String(d.answer_text).split("\n").slice(1, 3).join(" / ")}`);
|
|
15826
15827
|
if (d.cancel_reason) parts.push(` \u53D6\u308A\u4E0B\u3052\u7406\u7531: ${d.cancel_reason}`);
|
|
15827
15828
|
return parts.join("\n");
|
|
@@ -15862,6 +15863,22 @@ ${JSON.stringify({ items })}`, { items });
|
|
|
15862
15863
|
|
|
15863
15864
|
${JSON.stringify(decision)}`, { ...decision, steer_channel: { channel_id: channelId } });
|
|
15864
15865
|
} catch (error) {
|
|
15866
|
+
if (error instanceof ServerError && error.code === "confirm_required") {
|
|
15867
|
+
const decisions = error.body.decisions ?? [];
|
|
15868
|
+
const checkToken = String(error.body.check_token);
|
|
15869
|
+
return text(
|
|
15870
|
+
`${error.message}
|
|
15871
|
+
|
|
15872
|
+
\u81EA\u5206\u306E\u7533\u8ACB:
|
|
15873
|
+
${describe(decisions)}
|
|
15874
|
+
|
|
15875
|
+
check_token: ${checkToken}
|
|
15876
|
+
|
|
15877
|
+
${JSON.stringify({ error: error.code, check_token: checkToken, decisions })}`,
|
|
15878
|
+
{ error: error.code, check_token: checkToken, decisions },
|
|
15879
|
+
true
|
|
15880
|
+
);
|
|
15881
|
+
}
|
|
15865
15882
|
if (error instanceof ServerError && error.code === "duplicate_suspected") {
|
|
15866
15883
|
const existing = error.body.existing ?? [];
|
|
15867
15884
|
return text(`${error.message}
|
|
@@ -16141,6 +16158,7 @@ async function status() {
|
|
|
16141
16158
|
}
|
|
16142
16159
|
async function doctor() {
|
|
16143
16160
|
const problems = [];
|
|
16161
|
+
const hints = [];
|
|
16144
16162
|
const config = readConfig();
|
|
16145
16163
|
if (!config?.token) problems.push("Approval Box\u306B\u3064\u306A\u304C\u3063\u3066\u3044\u307E\u305B\u3093 \u2192 npx approval-box setup");
|
|
16146
16164
|
else {
|
|
@@ -16157,7 +16175,9 @@ async function doctor() {
|
|
|
16157
16175
|
if (!r.mcp) problems.push(`${LABEL[target]}: MCP\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093 \u2192 npx approval-box setup --only ${target}`);
|
|
16158
16176
|
if (r.hooks === false) problems.push(`${LABEL[target]}: hook\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093 \u2192 npx approval-box setup --only ${target}`);
|
|
16159
16177
|
if (r.entry && !existsSync6(r.entry)) problems.push(`${LABEL[target]}: \u767B\u9332\u5148\u306E\u30D5\u30A1\u30A4\u30EB\u304C\u3042\u308A\u307E\u305B\u3093\uFF08${r.entry}\uFF09\u3002node \u3084Approval Box\u3092\u5165\u308C\u76F4\u3057\u305F\u6642\u306B\u8D77\u304D\u307E\u3059 \u2192 npx approval-box setup`);
|
|
16178
|
+
if (r.mcp && r.instructions === false) hints.push(`${LABEL[target]}: \u5168\u4F53\u306E\u6307\u793A\u306BApproval Box\u306E\u4E00\u7BC0\u304C\u3042\u308A\u307E\u305B\u3093\u3002AI\u304C\u7533\u8ACB\u3092\u51FA\u3055\u306A\u3044\u6642\u306F \u2192 npx approval-box setup --only ${target}`);
|
|
16160
16179
|
}
|
|
16180
|
+
for (const hint of hints) out(`\u30FB${hint}`);
|
|
16161
16181
|
if (!problems.length) out("\u554F\u984C\u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5C4A\u304B\u306A\u3044\u6642\u306F\u3001AI\u306B\u300CApproval Box\u306Esetup_test\u3092\u5B9F\u884C\u3057\u3066\u300D\u3068\u8A00\u3063\u3066\u3001\u3069\u3053\u3067\u6B62\u307E\u308B\u304B\u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002");
|
|
16162
16182
|
else for (const problem of problems) out(`\u2717 ${problem}`);
|
|
16163
16183
|
if (problems.length) process.exitCode = 1;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "approval-box",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "Approval Box connector: lets Claude Code, Codex, Cursor and Grok ask you for a decision, and steers your answer back into the same session.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://approval-box.kitepon.dev",
|