@agent-deck/cli 1.2.3 → 1.2.4
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/agent-harness.d.ts.map +1 -1
- package/dist/agent-harness.js +5 -1
- package/dist/agent-harness.js.map +1 -1
- package/dist/mcp-config.d.ts.map +1 -1
- package/dist/mcp-config.js +2 -1
- package/dist/mcp-config.js.map +1 -1
- package/dist/setup.d.ts +3 -0
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +54 -8
- package/dist/setup.js.map +1 -1
- package/dist/statusline-setup.d.ts +16 -0
- package/dist/statusline-setup.d.ts.map +1 -0
- package/dist/statusline-setup.js +133 -0
- package/dist/statusline-setup.js.map +1 -0
- package/dist/statusline.d.ts.map +1 -1
- package/dist/statusline.js +13 -16
- package/dist/statusline.js.map +1 -1
- package/dist/strip-ansi.d.ts +5 -0
- package/dist/strip-ansi.d.ts.map +1 -0
- package/dist/strip-ansi.js +24 -0
- package/dist/strip-ansi.js.map +1 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-harness.d.ts","sourceRoot":"","sources":["../src/agent-harness.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1D,eAAO,MAAM,oBAAoB,sCAAsC,CAAC;AACxE,eAAO,MAAM,kBAAkB,oCAAoC,CAAC;AACpE,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,6GACkE,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-harness.d.ts","sourceRoot":"","sources":["../src/agent-harness.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1D,eAAO,MAAM,oBAAoB,sCAAsC,CAAC;AACxE,eAAO,MAAM,kBAAkB,oCAAoC,CAAC;AACpE,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,6GACkE,CAAC;AA2BxG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMjE;AAUD,qFAAqF;AACrF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,GAAE,MAAiC,GAC7C;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAuBvC;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEhE;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAevC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAetF;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAcF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,oBAAoB,CA6C9F"}
|
package/dist/agent-harness.js
CHANGED
|
@@ -18,7 +18,11 @@ exports.HARNESS_MARKER_END = '<!-- agent-deck:harness:end -->';
|
|
|
18
18
|
exports.CURSOR_RULE_FILENAME = 'agent-deck.mdc';
|
|
19
19
|
/** One-line rule description (Cursor rule picker / skill-style discoverability). */
|
|
20
20
|
exports.HARNESS_RULE_DESCRIPTION = 'Agent Deck MCP — check decks for tools; playbooks for recipes; self-improve playbooks from feedback';
|
|
21
|
-
const GLOBAL_BODY =
|
|
21
|
+
const GLOBAL_BODY = `**Connect first:** Ensure Agent Deck MCP is connected before using deck tools (\`agent-deck setup --client cursor|claude --start\`, then restart the host). Claude Code: \`claude mcp list\` should show agent-deck as Connected when the backend is running.
|
|
22
|
+
|
|
23
|
+
**Each workspace session:** Call \`bind_workspace\` with the project root on the first deck tool use. The host status line may show the bound deck — do not repeat the deck name every turn unless the user asks.
|
|
24
|
+
|
|
25
|
+
Before declining for missing tools (Slack, Linear, GitHub, etc.), use agent-deck MCP: \`bind_workspace\`, \`list_bound_deck_services\`, \`call_service_tool\`. Don't hardcode deck IDs.
|
|
22
26
|
|
|
23
27
|
Deck playbooks are task recipes — \`list_playbooks\` / \`get_playbook\` (match \`triggers\`). Don't mirror into \`.cursor/skills/\` — one source of truth on the deck.
|
|
24
28
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-harness.js","sourceRoot":"","sources":["../src/agent-harness.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"agent-harness.js","sourceRoot":"","sources":["../src/agent-harness.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,MAAM,CAElE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAuB9E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBrG;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBtE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGnF"}
|
package/dist/mcp-config.js
CHANGED
|
@@ -12,6 +12,7 @@ exports.writeJsonFile = writeJsonFile;
|
|
|
12
12
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
13
13
|
const node_os_1 = __importDefault(require("node:os"));
|
|
14
14
|
const node_path_1 = __importDefault(require("node:path"));
|
|
15
|
+
const strip_ansi_1 = require("./strip-ansi");
|
|
15
16
|
function buildMcpUrl({ host, mcpPort }) {
|
|
16
17
|
return `http://${host}:${mcpPort}/mcp`;
|
|
17
18
|
}
|
|
@@ -58,7 +59,7 @@ function readJsonFile(filePath) {
|
|
|
58
59
|
if (!node_fs_1.default.existsSync(filePath)) {
|
|
59
60
|
return {};
|
|
60
61
|
}
|
|
61
|
-
const raw = node_fs_1.default.readFileSync(filePath, 'utf8').trim();
|
|
62
|
+
const raw = (0, strip_ansi_1.sanitizeJsonText)(node_fs_1.default.readFileSync(filePath, 'utf8').trim());
|
|
62
63
|
if (!raw) {
|
|
63
64
|
return {};
|
|
64
65
|
}
|
package/dist/mcp-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
CHANGED
|
@@ -5,7 +5,10 @@ export interface SetupOptions {
|
|
|
5
5
|
host?: string;
|
|
6
6
|
mcpPort?: number;
|
|
7
7
|
start?: boolean;
|
|
8
|
+
statusline: boolean;
|
|
8
9
|
}
|
|
10
|
+
/** Status line is on by default for Claude Code and Cursor CLI; optional for Claude Desktop. */
|
|
11
|
+
export declare function resolveSetupStatusline(client: McpClient, explicit?: boolean): boolean;
|
|
9
12
|
export declare function printSetupUsage(): void;
|
|
10
13
|
export declare function runSetup(args: string[]): Promise<number>;
|
|
11
14
|
export declare function shouldStartAfterSetup(exitCode: number): boolean;
|
package/dist/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAGA,OAAO,EAOL,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAGA,OAAO,EAOL,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAItB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;CACrB;AA6ED,gGAAgG;AAChG,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAQrF;AAmCD,wBAAgB,eAAe,IAAI,IAAI,CActC;AAiCD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwC9D;AA2BD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/D"}
|
package/dist/setup.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveSetupStatusline = resolveSetupStatusline;
|
|
3
4
|
exports.printSetupUsage = printSetupUsage;
|
|
4
5
|
exports.runSetup = runSetup;
|
|
5
6
|
exports.shouldStartAfterSetup = shouldStartAfterSetup;
|
|
6
7
|
const node_child_process_1 = require("node:child_process");
|
|
7
8
|
const agent_harness_1 = require("./agent-harness");
|
|
8
9
|
const mcp_config_1 = require("./mcp-config");
|
|
10
|
+
const statusline_setup_1 = require("./statusline-setup");
|
|
9
11
|
const defaults_1 = require("./defaults");
|
|
10
12
|
function parseClient(value) {
|
|
11
13
|
if (!value) {
|
|
@@ -26,6 +28,7 @@ function parseSetupArgs(args) {
|
|
|
26
28
|
let host = process.env.AGENT_DECK_HOST ?? '127.0.0.1';
|
|
27
29
|
let mcpPort = (0, defaults_1.parseCliMcpPort)(process.env.AGENT_DECK_MCP_PORT);
|
|
28
30
|
let start = false;
|
|
31
|
+
let statusline;
|
|
29
32
|
for (let i = 0; i < args.length; i += 1) {
|
|
30
33
|
const arg = args[i];
|
|
31
34
|
if (arg === '--client') {
|
|
@@ -49,6 +52,12 @@ function parseSetupArgs(args) {
|
|
|
49
52
|
else if (arg === '--start') {
|
|
50
53
|
start = true;
|
|
51
54
|
}
|
|
55
|
+
else if (arg === '--statusline') {
|
|
56
|
+
statusline = true;
|
|
57
|
+
}
|
|
58
|
+
else if (arg === '--no-statusline') {
|
|
59
|
+
statusline = false;
|
|
60
|
+
}
|
|
52
61
|
else if (arg === '--help' || arg === '-h') {
|
|
53
62
|
return { error: 'help' };
|
|
54
63
|
}
|
|
@@ -65,7 +74,24 @@ function parseSetupArgs(args) {
|
|
|
65
74
|
if (!Number.isFinite(mcpPort)) {
|
|
66
75
|
return { error: '--mcp-port must be a number' };
|
|
67
76
|
}
|
|
68
|
-
return {
|
|
77
|
+
return {
|
|
78
|
+
client,
|
|
79
|
+
scope,
|
|
80
|
+
host,
|
|
81
|
+
mcpPort,
|
|
82
|
+
start,
|
|
83
|
+
statusline: resolveSetupStatusline(client, statusline),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/** Status line is on by default for Claude Code and Cursor CLI; optional for Claude Desktop. */
|
|
87
|
+
function resolveSetupStatusline(client, explicit) {
|
|
88
|
+
if (explicit === false) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
if (explicit === true) {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
return client === 'cursor' || client === 'claude';
|
|
69
95
|
}
|
|
70
96
|
async function tryClaudeCliAdd(endpoint) {
|
|
71
97
|
return new Promise((resolve) => {
|
|
@@ -95,7 +121,7 @@ async function tryClaudeCliAdd(endpoint) {
|
|
|
95
121
|
}
|
|
96
122
|
function printSetupUsage() {
|
|
97
123
|
console.log(`Usage:
|
|
98
|
-
agent-deck setup --client cursor|claude|claude-desktop [--scope global|project] [--mcp-port PORT] [--start]
|
|
124
|
+
agent-deck setup --client cursor|claude|claude-desktop [--scope global|project] [--mcp-port PORT] [--start] [--no-statusline]
|
|
99
125
|
|
|
100
126
|
Options:
|
|
101
127
|
--client MCP client to configure (required)
|
|
@@ -103,16 +129,33 @@ Options:
|
|
|
103
129
|
--host MCP host (default 127.0.0.1 or AGENT_DECK_HOST)
|
|
104
130
|
--mcp-port MCP port (default ${defaults_1.CLI_DEFAULT_MCP_PORT} or AGENT_DECK_MCP_PORT)
|
|
105
131
|
--start Start Agent Deck after writing config
|
|
132
|
+
--no-statusline Skip prompt status line (default: on for cursor and claude)
|
|
133
|
+
--statusline Same as default for cursor/claude (kept for compatibility)
|
|
106
134
|
|
|
107
|
-
Setup installs MCP config
|
|
135
|
+
Setup installs MCP config, agent harness, and deck status line (Claude Code / Cursor CLI).`);
|
|
108
136
|
}
|
|
109
|
-
function finishSetup(client, scope, endpoint, shouldStart) {
|
|
137
|
+
function finishSetup(client, scope, endpoint, shouldStart, withStatusline) {
|
|
110
138
|
const harness = (0, agent_harness_1.installAgentHarness)(client, scope);
|
|
111
139
|
console.log(harness.message);
|
|
112
140
|
if (!harness.installed && client === 'claude-desktop') {
|
|
113
141
|
console.log(' See docs/AGENT_HARNESS.md if you also use Claude Code or Cursor.');
|
|
114
142
|
}
|
|
115
|
-
|
|
143
|
+
if (withStatusline) {
|
|
144
|
+
if (client === 'cursor' || client === 'claude') {
|
|
145
|
+
const statusline = (0, statusline_setup_1.installStatusline)(client);
|
|
146
|
+
console.log(statusline.message);
|
|
147
|
+
if (client === 'claude') {
|
|
148
|
+
console.log(' Restart Claude Code after setup. If the status line stays blank, accept workspace trust for this project.');
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
console.log(' Restart Cursor CLI after setup.');
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
console.log(' --statusline applies to Cursor CLI and Claude Code only (not Claude Desktop).');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
printNextSteps(endpoint, shouldStart, client, withStatusline);
|
|
116
159
|
return shouldStart ? 2 : 0;
|
|
117
160
|
}
|
|
118
161
|
async function runSetup(args) {
|
|
@@ -136,7 +179,7 @@ async function runSetup(args) {
|
|
|
136
179
|
if (added.ok) {
|
|
137
180
|
console.log('Configured Claude Code via `claude mcp add` → ~/.claude.json');
|
|
138
181
|
console.log('Verify: claude mcp list');
|
|
139
|
-
return finishSetup(parsed.client, scope, endpoint, parsed.start === true);
|
|
182
|
+
return finishSetup(parsed.client, scope, endpoint, parsed.start === true, parsed.statusline);
|
|
140
183
|
}
|
|
141
184
|
console.warn(`Claude CLI failed (${added.error ?? 'unknown error'}) — writing ~/.claude.json instead`);
|
|
142
185
|
}
|
|
@@ -149,9 +192,9 @@ async function runSetup(args) {
|
|
|
149
192
|
console.log('Claude Desktop uses a stdio bridge (supergateway) because JSON config is stdio-only.');
|
|
150
193
|
console.log('Start Agent Deck before opening Claude Desktop.');
|
|
151
194
|
}
|
|
152
|
-
return finishSetup(parsed.client, scope, endpoint, parsed.start === true);
|
|
195
|
+
return finishSetup(parsed.client, scope, endpoint, parsed.start === true, parsed.statusline);
|
|
153
196
|
}
|
|
154
|
-
function printNextSteps(endpoint, shouldStart, client) {
|
|
197
|
+
function printNextSteps(endpoint, shouldStart, client, withStatusline = false) {
|
|
155
198
|
console.log('');
|
|
156
199
|
console.log('Next steps:');
|
|
157
200
|
if (shouldStart) {
|
|
@@ -165,6 +208,9 @@ function printNextSteps(endpoint, shouldStart, client) {
|
|
|
165
208
|
if (client === 'claude') {
|
|
166
209
|
console.log(' 4. Claude Code: `claude mcp list` — agent-deck should show Connected when step 1 is running');
|
|
167
210
|
}
|
|
211
|
+
if (withStatusline && (client === 'cursor' || client === 'claude')) {
|
|
212
|
+
console.log(' 5. Prompt footer should show "deck | N MCP | ..." after bind_workspace (debug: agent-deck statusline --workspace <path>)');
|
|
213
|
+
}
|
|
168
214
|
console.log('');
|
|
169
215
|
console.log('Optional: AGENT_DECK_AUTO_UPGRADE=1 agent-deck start (check npm for updates on start)');
|
|
170
216
|
}
|
package/dist/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const STATUSLINE_SCRIPT_NAME = "statusline.sh";
|
|
2
|
+
export declare const STATUSLINE_REFRESH_INTERVAL_SEC = 3;
|
|
3
|
+
export type StatuslineClient = 'cursor' | 'claude';
|
|
4
|
+
export type StatuslineInstallResult = {
|
|
5
|
+
installed: boolean;
|
|
6
|
+
configPath: string;
|
|
7
|
+
scriptPath: string;
|
|
8
|
+
action: 'created' | 'updated' | 'unchanged';
|
|
9
|
+
message: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function installStatuslineScript(): {
|
|
12
|
+
scriptPath: string;
|
|
13
|
+
action: 'created' | 'updated' | 'unchanged';
|
|
14
|
+
};
|
|
15
|
+
export declare function installStatusline(client: StatuslineClient): StatuslineInstallResult;
|
|
16
|
+
//# sourceMappingURL=statusline-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statusline-setup.d.ts","sourceRoot":"","sources":["../src/statusline-setup.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEnD,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AA0CF,wBAAgB,uBAAuB,IAAI;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAA;CAAE,CAY7G;AAyDD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,uBAAuB,CA+BnF"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.STATUSLINE_REFRESH_INTERVAL_SEC = exports.STATUSLINE_SCRIPT_NAME = void 0;
|
|
7
|
+
exports.installStatuslineScript = installStatuslineScript;
|
|
8
|
+
exports.installStatusline = installStatusline;
|
|
9
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
10
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
11
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
12
|
+
const mcp_config_1 = require("./mcp-config");
|
|
13
|
+
const version_1 = require("./version");
|
|
14
|
+
exports.STATUSLINE_SCRIPT_NAME = 'statusline.sh';
|
|
15
|
+
exports.STATUSLINE_REFRESH_INTERVAL_SEC = 3;
|
|
16
|
+
function resolveStatuslineScriptPath() {
|
|
17
|
+
return node_path_1.default.join(node_os_1.default.homedir(), '.agent-deck', 'bin', exports.STATUSLINE_SCRIPT_NAME);
|
|
18
|
+
}
|
|
19
|
+
function buildStatuslineScript(cliVersion) {
|
|
20
|
+
return `#!/usr/bin/env bash
|
|
21
|
+
# Agent Deck status line — installed by agent-deck setup
|
|
22
|
+
set -euo pipefail
|
|
23
|
+
|
|
24
|
+
export NO_COLOR=1
|
|
25
|
+
export FORCE_COLOR=0
|
|
26
|
+
export NPM_CONFIG_COLOR=false
|
|
27
|
+
|
|
28
|
+
if command -v agent-deck >/dev/null 2>&1; then
|
|
29
|
+
exec agent-deck statusline "$@"
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
NODE_BIN="\${NODE_BIN:-}"
|
|
33
|
+
if [ -z "$NODE_BIN" ] && command -v node >/dev/null 2>&1; then
|
|
34
|
+
NODE_BIN="$(command -v node)"
|
|
35
|
+
fi
|
|
36
|
+
if [ -z "$NODE_BIN" ] && [ -x /opt/homebrew/bin/node ]; then
|
|
37
|
+
NODE_BIN=/opt/homebrew/bin/node
|
|
38
|
+
fi
|
|
39
|
+
if [ -z "$NODE_BIN" ] && [ -x /usr/local/bin/node ]; then
|
|
40
|
+
NODE_BIN=/usr/local/bin/node
|
|
41
|
+
fi
|
|
42
|
+
if [ -z "$NODE_BIN" ]; then
|
|
43
|
+
NODE_BIN=node
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
GLOBAL_CLI="$(npm root -g 2>/dev/null)/@agent-deck/cli/dist/bin.js"
|
|
47
|
+
if [ -f "$GLOBAL_CLI" ]; then
|
|
48
|
+
exec "$NODE_BIN" "$GLOBAL_CLI" statusline "$@"
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
exec npx -y @agent-deck/cli@${cliVersion} statusline "$@" 2>/dev/null
|
|
52
|
+
`;
|
|
53
|
+
}
|
|
54
|
+
function installStatuslineScript() {
|
|
55
|
+
const scriptPath = resolveStatuslineScriptPath();
|
|
56
|
+
const next = buildStatuslineScript((0, version_1.getAgentDeckVersion)());
|
|
57
|
+
const existing = node_fs_1.default.existsSync(scriptPath) ? node_fs_1.default.readFileSync(scriptPath, 'utf8') : '';
|
|
58
|
+
node_fs_1.default.mkdirSync(node_path_1.default.dirname(scriptPath), { recursive: true });
|
|
59
|
+
node_fs_1.default.writeFileSync(scriptPath, next, { encoding: 'utf8', mode: 0o755 });
|
|
60
|
+
return {
|
|
61
|
+
scriptPath,
|
|
62
|
+
action: existing === next ? 'unchanged' : existing ? 'updated' : 'created',
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function resolveStatuslineConfigPath(client) {
|
|
66
|
+
const home = node_os_1.default.homedir();
|
|
67
|
+
if (client === 'cursor') {
|
|
68
|
+
return node_path_1.default.join(home, '.cursor', 'cli-config.json');
|
|
69
|
+
}
|
|
70
|
+
return node_path_1.default.join(home, '.claude', 'settings.json');
|
|
71
|
+
}
|
|
72
|
+
function buildStatuslineConfig(scriptPath, client) {
|
|
73
|
+
const base = {
|
|
74
|
+
type: 'command',
|
|
75
|
+
command: scriptPath,
|
|
76
|
+
padding: 2,
|
|
77
|
+
};
|
|
78
|
+
if (client === 'cursor') {
|
|
79
|
+
return {
|
|
80
|
+
...base,
|
|
81
|
+
timeoutMs: 1500,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
...base,
|
|
86
|
+
refreshInterval: exports.STATUSLINE_REFRESH_INTERVAL_SEC,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function mergeStatuslineConfig(existing, scriptPath, client) {
|
|
90
|
+
const nextStatusLine = buildStatuslineConfig(scriptPath, client);
|
|
91
|
+
const current = existing.statusLine;
|
|
92
|
+
const unchanged = current &&
|
|
93
|
+
typeof current === 'object' &&
|
|
94
|
+
!Array.isArray(current) &&
|
|
95
|
+
current.command === nextStatusLine.command &&
|
|
96
|
+
current.type === nextStatusLine.type;
|
|
97
|
+
if (unchanged) {
|
|
98
|
+
return { config: existing, changed: false };
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
config: {
|
|
102
|
+
...existing,
|
|
103
|
+
statusLine: nextStatusLine,
|
|
104
|
+
},
|
|
105
|
+
changed: true,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function installStatusline(client) {
|
|
109
|
+
const { scriptPath, action: scriptAction } = installStatuslineScript();
|
|
110
|
+
const configPath = resolveStatuslineConfigPath(client);
|
|
111
|
+
const existing = (0, mcp_config_1.readJsonFile)(configPath);
|
|
112
|
+
const { config, changed } = mergeStatuslineConfig(existing, scriptPath, client);
|
|
113
|
+
if (changed) {
|
|
114
|
+
(0, mcp_config_1.writeJsonFile)(configPath, config);
|
|
115
|
+
}
|
|
116
|
+
const configAction = changed ? (Object.keys(existing).length ? 'updated' : 'created') : 'unchanged';
|
|
117
|
+
const finalAction = scriptAction === 'created' || configAction === 'created'
|
|
118
|
+
? 'created'
|
|
119
|
+
: scriptAction === 'unchanged' && configAction === 'unchanged'
|
|
120
|
+
? 'unchanged'
|
|
121
|
+
: 'updated';
|
|
122
|
+
const hostLabel = client === 'cursor' ? 'Cursor CLI' : 'Claude Code';
|
|
123
|
+
return {
|
|
124
|
+
installed: true,
|
|
125
|
+
configPath,
|
|
126
|
+
scriptPath,
|
|
127
|
+
action: finalAction,
|
|
128
|
+
message: finalAction === 'unchanged'
|
|
129
|
+
? `Status line already configured for ${hostLabel} → ${configPath}`
|
|
130
|
+
: `Installed deck status line for ${hostLabel} → ${configPath} (command: ${scriptPath})`,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=statusline-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statusline-setup.js","sourceRoot":"","sources":["../src/statusline-setup.ts"],"names":[],"mappings":"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"}
|
package/dist/statusline.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusline.d.ts","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"statusline.d.ts","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"AA4FA,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAsBhF;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BnE"}
|
package/dist/statusline.js
CHANGED
|
@@ -6,10 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.resolveStatuslineWorkspace = resolveStatuslineWorkspace;
|
|
7
7
|
exports.runStatusline = runStatusline;
|
|
8
8
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
-
const node_os_1 = __importDefault(require("node:os"));
|
|
10
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
11
9
|
const shared_1 = require("@agent-deck/shared");
|
|
12
10
|
const defaults_1 = require("./defaults");
|
|
11
|
+
const strip_ansi_1 = require("./strip-ansi");
|
|
13
12
|
const DEFAULT_TIMEOUT_MS = 1500;
|
|
14
13
|
async function readStdin() {
|
|
15
14
|
if (process.stdin.isTTY) {
|
|
@@ -50,22 +49,14 @@ async function fetchDisplay(backendUrl, workspaceRoot, timeoutMs) {
|
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
51
|
function readSidecarLine(workspaceRoot) {
|
|
53
|
-
const
|
|
54
|
-
if (process.env.AGENT_DECK_HOME?.trim()) {
|
|
55
|
-
candidates.add(node_path_1.default.join(node_path_1.default.resolve(process.env.AGENT_DECK_HOME.trim()), 'bindings.json'));
|
|
56
|
-
}
|
|
57
|
-
candidates.add((0, shared_1.resolveBindingsFilePath)());
|
|
58
|
-
const home = node_path_1.default.join(node_os_1.default.homedir(), '.agent-deck');
|
|
59
|
-
candidates.add(node_path_1.default.join(home, 'bindings.json'));
|
|
60
|
-
candidates.add(node_path_1.default.join(home, 'dev', 'bindings.json'));
|
|
61
|
-
for (const filePath of candidates) {
|
|
52
|
+
for (const filePath of (0, shared_1.listBindingsFileCandidates)()) {
|
|
62
53
|
try {
|
|
63
54
|
const raw = node_fs_1.default.readFileSync(filePath, 'utf8');
|
|
64
55
|
const parsed = shared_1.BindingsFileSchema.safeParse(JSON.parse(raw));
|
|
65
56
|
if (!parsed.success) {
|
|
66
57
|
continue;
|
|
67
58
|
}
|
|
68
|
-
const entry = parsed.data
|
|
59
|
+
const entry = (0, shared_1.lookupWorkspaceBinding)(parsed.data, workspaceRoot);
|
|
69
60
|
if (entry) {
|
|
70
61
|
return (0, shared_1.formatDisplayLine)(entry.deckName, entry.cardCounts);
|
|
71
62
|
}
|
|
@@ -76,6 +67,9 @@ function readSidecarLine(workspaceRoot) {
|
|
|
76
67
|
}
|
|
77
68
|
return null;
|
|
78
69
|
}
|
|
70
|
+
function shouldUseApiDisplay(display) {
|
|
71
|
+
return Boolean(display.deckName && display.source !== 'unbound');
|
|
72
|
+
}
|
|
79
73
|
function resolveBackendPorts() {
|
|
80
74
|
if (process.env.AGENT_DECK_PORT?.trim()) {
|
|
81
75
|
return [(0, defaults_1.parseCliBackendPort)(process.env.AGENT_DECK_PORT)];
|
|
@@ -115,17 +109,20 @@ async function runStatusline(args) {
|
|
|
115
109
|
for (const backendPort of backendPorts) {
|
|
116
110
|
const backendUrl = `http://${host}:${backendPort}`;
|
|
117
111
|
const display = await fetchDisplay(backendUrl, workspaceRoot, timeoutMs);
|
|
118
|
-
if (display
|
|
119
|
-
|
|
112
|
+
if (display && shouldUseApiDisplay(display)) {
|
|
113
|
+
printStatusLine(display.displayLine);
|
|
120
114
|
return 0;
|
|
121
115
|
}
|
|
122
116
|
}
|
|
123
117
|
const sidecarLine = readSidecarLine(workspaceRoot);
|
|
124
118
|
if (sidecarLine) {
|
|
125
|
-
|
|
119
|
+
printStatusLine(sidecarLine);
|
|
126
120
|
return 0;
|
|
127
121
|
}
|
|
128
|
-
|
|
122
|
+
printStatusLine((0, shared_1.formatDisplayLine)(null, { mcp: 0, credentials: 0, playbooks: 0 }, { offline: true }));
|
|
129
123
|
return 0;
|
|
130
124
|
}
|
|
125
|
+
function printStatusLine(line) {
|
|
126
|
+
process.stdout.write(`${(0, strip_ansi_1.stripAnsi)(line)}\n`);
|
|
127
|
+
}
|
|
131
128
|
//# sourceMappingURL=statusline.js.map
|
package/dist/statusline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusline.js","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"statusline.js","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Remove terminal ANSI SGR/OSC sequences that break JSON when pasted into config files. */
|
|
2
|
+
export declare function stripAnsi(text: string): string;
|
|
3
|
+
/** Strip ANSI and other C0 controls except tab/newline/carriage return. */
|
|
4
|
+
export declare function sanitizeJsonText(text: string): string;
|
|
5
|
+
//# sourceMappingURL=strip-ansi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strip-ansi.d.ts","sourceRoot":"","sources":["../src/strip-ansi.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9C;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUrD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stripAnsi = stripAnsi;
|
|
4
|
+
exports.sanitizeJsonText = sanitizeJsonText;
|
|
5
|
+
/** Remove terminal ANSI SGR/OSC sequences that break JSON when pasted into config files. */
|
|
6
|
+
function stripAnsi(text) {
|
|
7
|
+
return text
|
|
8
|
+
.replace(/\u001b\[[0-9;]*[ -/]*[@-~]/g, '')
|
|
9
|
+
.replace(/\u001b\][^\u0007]*(?:\u0007|\u001b\\)/g, '')
|
|
10
|
+
.replace(/\u001b[@-_]/g, '');
|
|
11
|
+
}
|
|
12
|
+
/** Strip ANSI and other C0 controls except tab/newline/carriage return. */
|
|
13
|
+
function sanitizeJsonText(text) {
|
|
14
|
+
const withoutAnsi = stripAnsi(text);
|
|
15
|
+
let cleaned = '';
|
|
16
|
+
for (const char of withoutAnsi) {
|
|
17
|
+
const code = char.charCodeAt(0);
|
|
18
|
+
if (code === 9 || code === 10 || code === 13 || code >= 32) {
|
|
19
|
+
cleaned += char;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return cleaned;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=strip-ansi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strip-ansi.js","sourceRoot":"","sources":["../src/strip-ansi.ts"],"names":[],"mappings":";;AACA,8BAKC;AAGD,4CAUC;AAnBD,4FAA4F;AAC5F,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI;SACR,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC;SAC1C,OAAO,CAAC,wCAAwC,EAAE,EAAE,CAAC;SACrD,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,2EAA2E;AAC3E,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YAC3D,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-deck/cli",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "Local MCP proxy with decks — one endpoint for Claude Code, Cursor, and other MCP clients",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"bin": {
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"prepublishOnly": "node ../../scripts/pre-publish-check.mjs && npm run build"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@agent-deck/backend": "^1.2.
|
|
43
|
-
"@agent-deck/shared": "^1.2.
|
|
42
|
+
"@agent-deck/backend": "^1.2.4",
|
|
43
|
+
"@agent-deck/shared": "^1.2.4"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/node": "^20.11.5",
|