@parkercto/cli 0.2.1 → 0.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/cli.js +54 -0
- package/dist/preuninstall.js +3 -0
- package/package.json +6 -4
- package/dist/bin/parker.d.ts +0 -3
- package/dist/bin/parker.d.ts.map +0 -1
- package/dist/bin/parker.js +0 -3
- package/dist/bin/parker.js.map +0 -1
- package/dist/src/bin/parker.d.ts +0 -3
- package/dist/src/bin/parker.d.ts.map +0 -1
- package/dist/src/bin/parker.js +0 -3
- package/dist/src/bin/parker.js.map +0 -1
- package/dist/src/cli.d.ts +0 -3
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/cli.js +0 -40
- package/dist/src/cli.js.map +0 -1
- package/dist/src/client/api-client.d.ts +0 -64
- package/dist/src/client/api-client.d.ts.map +0 -1
- package/dist/src/client/api-client.js +0 -113
- package/dist/src/client/api-client.js.map +0 -1
- package/dist/src/client/auth.d.ts +0 -12
- package/dist/src/client/auth.d.ts.map +0 -1
- package/dist/src/client/auth.js +0 -46
- package/dist/src/client/auth.js.map +0 -1
- package/dist/src/commands/auth.d.ts +0 -3
- package/dist/src/commands/auth.d.ts.map +0 -1
- package/dist/src/commands/auth.js +0 -36
- package/dist/src/commands/auth.js.map +0 -1
- package/dist/src/commands/connect.d.ts +0 -12
- package/dist/src/commands/connect.d.ts.map +0 -1
- package/dist/src/commands/connect.js +0 -266
- package/dist/src/commands/connect.js.map +0 -1
- package/dist/src/commands/disable.d.ts +0 -3
- package/dist/src/commands/disable.d.ts.map +0 -1
- package/dist/src/commands/disable.js +0 -8
- package/dist/src/commands/disable.js.map +0 -1
- package/dist/src/commands/enable.d.ts +0 -3
- package/dist/src/commands/enable.d.ts.map +0 -1
- package/dist/src/commands/enable.js +0 -207
- package/dist/src/commands/enable.js.map +0 -1
- package/dist/src/commands/hook.d.ts +0 -3
- package/dist/src/commands/hook.d.ts.map +0 -1
- package/dist/src/commands/hook.js +0 -214
- package/dist/src/commands/hook.js.map +0 -1
- package/dist/src/commands/join.d.ts +0 -9
- package/dist/src/commands/join.d.ts.map +0 -1
- package/dist/src/commands/join.js +0 -61
- package/dist/src/commands/join.js.map +0 -1
- package/dist/src/commands/update.d.ts +0 -3
- package/dist/src/commands/update.d.ts.map +0 -1
- package/dist/src/commands/update.js +0 -36
- package/dist/src/commands/update.js.map +0 -1
- package/dist/src/constants.d.ts +0 -26
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js +0 -28
- package/dist/src/constants.js.map +0 -1
- package/dist/src/lib/auto-update.d.ts +0 -10
- package/dist/src/lib/auto-update.d.ts.map +0 -1
- package/dist/src/lib/auto-update.js +0 -106
- package/dist/src/lib/auto-update.js.map +0 -1
- package/dist/src/lib/local-git.d.ts +0 -8
- package/dist/src/lib/local-git.d.ts.map +0 -1
- package/dist/src/lib/local-git.js +0 -36
- package/dist/src/lib/local-git.js.map +0 -1
- package/dist/src/lib/redact.d.ts +0 -13
- package/dist/src/lib/redact.d.ts.map +0 -1
- package/dist/src/lib/redact.js +0 -33
- package/dist/src/lib/redact.js.map +0 -1
- package/dist/src/lib/redact_tests.d.ts +0 -2
- package/dist/src/lib/redact_tests.d.ts.map +0 -1
- package/dist/src/lib/redact_tests.js +0 -75
- package/dist/src/lib/redact_tests.js.map +0 -1
- package/dist/src/lib/repo-config.d.ts +0 -13
- package/dist/src/lib/repo-config.d.ts.map +0 -1
- package/dist/src/lib/repo-config.js +0 -40
- package/dist/src/lib/repo-config.js.map +0 -1
- package/dist/src/lib/session-state.d.ts +0 -20
- package/dist/src/lib/session-state.d.ts.map +0 -1
- package/dist/src/lib/session-state.js +0 -50
- package/dist/src/lib/session-state.js.map +0 -1
- package/dist/src/lib/session-state_tests.d.ts +0 -2
- package/dist/src/lib/session-state_tests.d.ts.map +0 -1
- package/dist/src/lib/session-state_tests.js +0 -34
- package/dist/src/lib/session-state_tests.js.map +0 -1
- package/dist/src/render/help.d.ts +0 -2
- package/dist/src/render/help.d.ts.map +0 -1
- package/dist/src/render/help.js +0 -21
- package/dist/src/render/help.js.map +0 -1
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { readdirSync } from "fs";
|
|
3
|
-
import { loadAuth } from "../client/auth.js";
|
|
4
|
-
import { loadRepoConfig } from "../lib/repo-config.js";
|
|
5
|
-
import { saveSessionState, loadSessionState, clearSessionState, } from "../lib/session-state.js";
|
|
6
|
-
import { ParkerClient } from "../client/api-client.js";
|
|
7
|
-
import { getGitRoot } from "../lib/local-git.js";
|
|
8
|
-
import { redactSecrets } from "../lib/redact.js";
|
|
9
|
-
const MAX_CONTEXT_CARDS = 3;
|
|
10
|
-
const MAX_FILES_TO_LIST = 100;
|
|
11
|
-
const UNKNOWN_TOOL_NAME = "unknown";
|
|
12
|
-
/**
|
|
13
|
-
* Reads all of stdin as a string. Returns empty string if stdin is not piped.
|
|
14
|
-
*/
|
|
15
|
-
async function readStdin() {
|
|
16
|
-
if (process.stdin.isTTY) {
|
|
17
|
-
return "";
|
|
18
|
-
}
|
|
19
|
-
const chunks = [];
|
|
20
|
-
for await (const chunk of process.stdin) {
|
|
21
|
-
chunks.push(Buffer.from(chunk));
|
|
22
|
-
}
|
|
23
|
-
return Buffer.concat(chunks).toString("utf-8");
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Parse stdin JSON, returning null on any failure.
|
|
27
|
-
*/
|
|
28
|
-
async function parseStdinJson() {
|
|
29
|
-
try {
|
|
30
|
-
const raw = await readStdin();
|
|
31
|
-
if (!raw.trim())
|
|
32
|
-
return null;
|
|
33
|
-
return JSON.parse(raw);
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Extracts a file path from a Claude Code tool input object.
|
|
41
|
-
*/
|
|
42
|
-
function extractFilePath(toolInput) {
|
|
43
|
-
// Common tool_input shapes: { file_path: "..." }, { path: "..." }, { command: "..." }
|
|
44
|
-
if (typeof toolInput.file_path === "string")
|
|
45
|
-
return toolInput.file_path;
|
|
46
|
-
if (typeof toolInput.path === "string")
|
|
47
|
-
return toolInput.path;
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Formats context cards into a concise string for additionalContext injection.
|
|
52
|
-
*/
|
|
53
|
-
function formatCardsForContext(cards) {
|
|
54
|
-
if (cards.length === 0)
|
|
55
|
-
return "";
|
|
56
|
-
const lines = cards.map((card) => `[${card.kind}] ${card.headline}: ${card.summary}`);
|
|
57
|
-
return `Parker context for this file:\n${lines.join("\n")}`;
|
|
58
|
-
}
|
|
59
|
-
// ---------- Subcommands ----------
|
|
60
|
-
const sessionStart = new Command("session-start")
|
|
61
|
-
.description("Hook: called when a Claude Code session starts")
|
|
62
|
-
.action(async () => {
|
|
63
|
-
try {
|
|
64
|
-
const input = await parseStdinJson();
|
|
65
|
-
const claudeSessionId = input?.session_id ?? `fallback-${Date.now()}`;
|
|
66
|
-
const auth = await loadAuth();
|
|
67
|
-
if (!auth) {
|
|
68
|
-
process.stdout.write("{}");
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
const repoConfig = await loadRepoConfig();
|
|
72
|
-
if (!repoConfig) {
|
|
73
|
-
process.stdout.write("{}");
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
const client = new ParkerClient(auth.apiUrl, auth.token);
|
|
77
|
-
// Resolve team and engineer
|
|
78
|
-
let teamInfo = null;
|
|
79
|
-
try {
|
|
80
|
-
teamInfo = await client.getTeam(repoConfig.teamCode);
|
|
81
|
-
}
|
|
82
|
-
catch (err) {
|
|
83
|
-
process.stderr.write(`parker hook session-start: failed to resolve team: ${err}\n`);
|
|
84
|
-
process.stdout.write("{}");
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
// List top-level files in working directory for card matching
|
|
88
|
-
let filesInWorkingDir = [];
|
|
89
|
-
try {
|
|
90
|
-
const gitRoot = await getGitRoot();
|
|
91
|
-
filesInWorkingDir = readdirSync(gitRoot, { withFileTypes: true })
|
|
92
|
-
.filter((d) => d.isFile())
|
|
93
|
-
.map((d) => d.name)
|
|
94
|
-
.slice(0, MAX_FILES_TO_LIST);
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
// Non-critical
|
|
98
|
-
}
|
|
99
|
-
const result = await client.createSession(teamInfo.id, new Date().toISOString(), filesInWorkingDir);
|
|
100
|
-
await saveSessionState(claudeSessionId, {
|
|
101
|
-
sessionId: result.sessionId,
|
|
102
|
-
teamId: teamInfo.id,
|
|
103
|
-
engineerId: auth.userId,
|
|
104
|
-
apiUrl: auth.apiUrl,
|
|
105
|
-
token: auth.token,
|
|
106
|
-
});
|
|
107
|
-
// Return context cards if any exist
|
|
108
|
-
if (result.cards && result.cards.length > 0) {
|
|
109
|
-
const contextStr = formatCardsForContext(result.cards);
|
|
110
|
-
process.stdout.write(JSON.stringify({ additionalContext: contextStr }));
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
process.stdout.write("{}");
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
catch (err) {
|
|
117
|
-
process.stderr.write(`parker hook session-start error: ${err}\n`);
|
|
118
|
-
process.stdout.write("{}");
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
const event = new Command("event")
|
|
122
|
-
.description("Hook: called after a tool use during a Claude Code session")
|
|
123
|
-
.action(async () => {
|
|
124
|
-
try {
|
|
125
|
-
const input = await parseStdinJson();
|
|
126
|
-
if (!input)
|
|
127
|
-
return;
|
|
128
|
-
const claudeSessionId = input.session_id ?? "";
|
|
129
|
-
const state = await loadSessionState(claudeSessionId);
|
|
130
|
-
if (!state)
|
|
131
|
-
return;
|
|
132
|
-
const toolName = input.tool_name ?? UNKNOWN_TOOL_NAME;
|
|
133
|
-
const toolInput = input.tool_input ?? {};
|
|
134
|
-
const filePath = extractFilePath(toolInput);
|
|
135
|
-
const eventData = redactSecrets({
|
|
136
|
-
toolName,
|
|
137
|
-
filePath,
|
|
138
|
-
success: input.tool_error === undefined || input.tool_error === null,
|
|
139
|
-
timestamp: new Date().toISOString(),
|
|
140
|
-
});
|
|
141
|
-
const client = new ParkerClient(state.apiUrl, state.token);
|
|
142
|
-
// Fire-and-forget — swallow all errors
|
|
143
|
-
client.sendEvents(state.sessionId, [eventData]).catch((err) => {
|
|
144
|
-
process.stderr.write(`parker hook event send error: ${err}\n`);
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
catch (err) {
|
|
148
|
-
process.stderr.write(`parker hook event error: ${err}\n`);
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
const context = new Command("context")
|
|
152
|
-
.description("Hook: called before a tool use to inject context")
|
|
153
|
-
.action(async () => {
|
|
154
|
-
try {
|
|
155
|
-
const input = await parseStdinJson();
|
|
156
|
-
if (!input) {
|
|
157
|
-
process.stdout.write("{}");
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
const claudeSessionId = input.session_id ?? "";
|
|
161
|
-
const state = await loadSessionState(claudeSessionId);
|
|
162
|
-
if (!state) {
|
|
163
|
-
process.stdout.write("{}");
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
const toolInput = input.tool_input ?? {};
|
|
167
|
-
const filePath = extractFilePath(toolInput);
|
|
168
|
-
if (!filePath) {
|
|
169
|
-
process.stdout.write("{}");
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
const client = new ParkerClient(state.apiUrl, state.token);
|
|
173
|
-
const result = await client.getContext(state.teamId, filePath);
|
|
174
|
-
if (result.cards && result.cards.length > 0) {
|
|
175
|
-
const contextStr = formatCardsForContext(result.cards.slice(0, MAX_CONTEXT_CARDS));
|
|
176
|
-
process.stdout.write(JSON.stringify({ additionalContext: contextStr }));
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
process.stdout.write("{}");
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
catch (err) {
|
|
183
|
-
process.stderr.write(`parker hook context error: ${err}\n`);
|
|
184
|
-
process.stdout.write("{}");
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
const sessionEnd = new Command("session-end")
|
|
188
|
-
.description("Hook: called when a Claude Code session ends")
|
|
189
|
-
.action(async () => {
|
|
190
|
-
try {
|
|
191
|
-
const input = await parseStdinJson();
|
|
192
|
-
const claudeSessionId = input?.session_id ?? "";
|
|
193
|
-
const state = await loadSessionState(claudeSessionId);
|
|
194
|
-
if (!state)
|
|
195
|
-
return;
|
|
196
|
-
const client = new ParkerClient(state.apiUrl, state.token);
|
|
197
|
-
await client.endSession(state.sessionId, {
|
|
198
|
-
endedAt: new Date().toISOString(),
|
|
199
|
-
filesRead: [],
|
|
200
|
-
filesModified: [],
|
|
201
|
-
});
|
|
202
|
-
await clearSessionState(claudeSessionId);
|
|
203
|
-
}
|
|
204
|
-
catch (err) {
|
|
205
|
-
process.stderr.write(`parker hook session-end error: ${err}\n`);
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
export const hookCommand = new Command("hook")
|
|
209
|
-
.description("Claude Code hook handlers (internal)")
|
|
210
|
-
.addCommand(sessionStart)
|
|
211
|
-
.addCommand(event)
|
|
212
|
-
.addCommand(context)
|
|
213
|
-
.addCommand(sessionEnd);
|
|
214
|
-
//# sourceMappingURL=hook.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../src/commands/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAEpC;;GAEG;AACH,KAAK,UAAU,SAAS;IACtB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,SAAkC;IACzD,sFAAsF;IACtF,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC,SAAS,CAAC;IACxE,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,KAAqF;IAErF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,CACnD,CAAC;IACF,OAAO,kCAAkC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,oCAAoC;AAEpC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC;KAC9C,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;QACrC,MAAM,eAAe,GAAI,KAAK,EAAE,UAAqB,IAAI,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAElF,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,cAAc,EAAE,CAAC;QAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzD,4BAA4B;QAC5B,IAAI,QAAQ,GAA0B,IAAI,CAAC;QAC3C,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,GAAG,IAAI,CAAC,CAAC;YACpF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,8DAA8D;QAC9D,IAAI,iBAAiB,GAAa,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;YACnC,iBAAiB,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;iBAC9D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBAClB,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CACvC,QAAQ,CAAC,EAAE,EACX,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACxB,iBAAiB,CAClB,CAAC;QAEF,MAAM,gBAAgB,CAAC,eAAe,EAAE;YACtC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,QAAQ,CAAC,EAAE;YACnB,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,oCAAoC;QACpC,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,qBAAqB,CACtC,MAAM,CAAC,KAAuF,CAC/F,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAC;QAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC/B,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,eAAe,GAAI,KAAK,CAAC,UAAqB,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,QAAQ,GAAI,KAAK,CAAC,SAAoB,IAAI,iBAAiB,CAAC;QAClE,MAAM,SAAS,GAAI,KAAK,CAAC,UAAsC,IAAI,EAAE,CAAC;QACtE,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAE5C,MAAM,SAAS,GAAG,aAAa,CAAC;YAC9B,QAAQ;YACR,QAAQ;YACR,OAAO,EAAE,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI;YACpE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,uCAAuC;QACvC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACnC,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAI,KAAK,CAAC,UAAqB,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAI,KAAK,CAAC,UAAsC,IAAI,EAAE,CAAC;QACtE,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE/D,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,qBAAqB,CACtC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CACzC,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,IAAI,CAAC,CAAC;QAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;KAC1C,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;QACrC,MAAM,eAAe,GAAI,KAAK,EAAE,UAAqB,IAAI,EAAE,CAAC;QAE5D,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE;YACvC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,SAAS,EAAE,EAAE;YACb,aAAa,EAAE,EAAE;SAClB,CAAC,CAAC;QAEH,MAAM,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,GAAG,IAAI,CAAC,CAAC;IAClE,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,sCAAsC,CAAC;KACnD,UAAU,CAAC,YAAY,CAAC;KACxB,UAAU,CAAC,KAAK,CAAC;KACjB,UAAU,CAAC,OAAO,CAAC;KACnB,UAAU,CAAC,UAAU,CAAC,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { type AuthContext } from "../client/auth.js";
|
|
3
|
-
/**
|
|
4
|
-
* Joins a team by code, writes repo config, and auto-installs Claude Code integration.
|
|
5
|
-
* Shared between `parker join <code>` and the `parker enable` flow.
|
|
6
|
-
*/
|
|
7
|
-
export declare function joinTeamInteractive(auth: AuthContext, teamCode: string): Promise<void>;
|
|
8
|
-
export declare const joinCommand: Command;
|
|
9
|
-
//# sourceMappingURL=join.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../../src/commands/join.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIlE;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa5F;AAED,eAAO,MAAM,WAAW,SAqCpB,CAAC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import chalk from "chalk";
|
|
3
|
-
import { ParkerClient, ApiError } from "../client/api-client.js";
|
|
4
|
-
import { requireAuth } from "../client/auth.js";
|
|
5
|
-
import { loadRepoConfig, saveRepoConfig } from "../lib/repo-config.js";
|
|
6
|
-
import { installClaudeIntegration } from "./connect.js";
|
|
7
|
-
/**
|
|
8
|
-
* Joins a team by code, writes repo config, and auto-installs Claude Code integration.
|
|
9
|
-
* Shared between `parker join <code>` and the `parker enable` flow.
|
|
10
|
-
*/
|
|
11
|
-
export async function joinTeamInteractive(auth, teamCode) {
|
|
12
|
-
const client = new ParkerClient(auth.apiUrl, auth.token);
|
|
13
|
-
const result = await client.joinTeam(teamCode.toUpperCase());
|
|
14
|
-
await saveRepoConfig({ teamCode: result.team.teamCode });
|
|
15
|
-
console.log(chalk.green(`✓ Joined team "${result.team.name}" as ${result.role}`));
|
|
16
|
-
console.log(chalk.dim(`Team code: ${result.team.teamCode}`));
|
|
17
|
-
console.log("");
|
|
18
|
-
// Auto-install Claude Code skills and hooks
|
|
19
|
-
await installClaudeIntegration();
|
|
20
|
-
}
|
|
21
|
-
export const joinCommand = new Command("join")
|
|
22
|
-
.description("Join a team")
|
|
23
|
-
.argument("[code]", "Team join code (e.g., XKCD-LAMP-FISH)")
|
|
24
|
-
.action(async (code) => {
|
|
25
|
-
const auth = await requireAuth();
|
|
26
|
-
let teamCode = code;
|
|
27
|
-
if (!teamCode) {
|
|
28
|
-
const repoConfig = await loadRepoConfig();
|
|
29
|
-
if (repoConfig?.teamCode) {
|
|
30
|
-
teamCode = repoConfig.teamCode;
|
|
31
|
-
console.log(chalk.dim(`Using team code from .parker/config.json: ${teamCode}`));
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
console.error(chalk.red("No team code provided and no .parker/config.json found."));
|
|
35
|
-
console.log(chalk.dim("Usage: parker join <code>"));
|
|
36
|
-
process.exit(1);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
try {
|
|
40
|
-
await joinTeamInteractive(auth, teamCode);
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
if (error instanceof ApiError) {
|
|
44
|
-
if (error.status === 400) {
|
|
45
|
-
console.error(chalk.red("Invalid team code"));
|
|
46
|
-
}
|
|
47
|
-
else if (error.status === 404) {
|
|
48
|
-
console.error(chalk.red("Team not found"));
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
console.error(chalk.red(`Failed to join team: ${error.message}`));
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
56
|
-
console.error(chalk.red(`Failed to join team: ${message}`));
|
|
57
|
-
}
|
|
58
|
-
process.exit(1);
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
//# sourceMappingURL=join.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../../src/commands/join.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,aAAa,SAkCtB,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { execSync } from "child_process";
|
|
3
|
-
import { createRequire } from "module";
|
|
4
|
-
import { fileURLToPath } from "url";
|
|
5
|
-
import { dirname, resolve } from "path";
|
|
6
|
-
import chalk from "chalk";
|
|
7
|
-
import updateNotifier from "update-notifier";
|
|
8
|
-
import { PACKAGE_NAME } from "../constants.js";
|
|
9
|
-
export const updateCommand = new Command("update")
|
|
10
|
-
.description("Update the Parker CLI to the latest version")
|
|
11
|
-
.action(async () => {
|
|
12
|
-
console.log(chalk.cyan("Checking for updates..."));
|
|
13
|
-
try {
|
|
14
|
-
const require = createRequire(import.meta.url);
|
|
15
|
-
const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), "../..");
|
|
16
|
-
const packageJson = require(resolve(packageRoot, "package.json"));
|
|
17
|
-
// Force a fresh check (bypass cache) for manual updates.
|
|
18
|
-
const notifier = updateNotifier({ pkg: packageJson, updateCheckInterval: 0 });
|
|
19
|
-
await notifier.fetchInfo();
|
|
20
|
-
if (!notifier.update || notifier.update.latest === packageJson.version) {
|
|
21
|
-
console.log(chalk.green("Already on the latest version."));
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
const { current, latest } = notifier.update;
|
|
25
|
-
console.log(`Updating from ${chalk.dim(current)} → ${chalk.green(latest)}...`);
|
|
26
|
-
execSync(`npm install -g ${PACKAGE_NAME}@latest`, { stdio: "inherit" });
|
|
27
|
-
console.log(chalk.green("Successfully updated to the latest version."));
|
|
28
|
-
}
|
|
29
|
-
catch (error) {
|
|
30
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
31
|
-
console.error(chalk.red(`Update failed: ${message}`));
|
|
32
|
-
console.error(chalk.dim(`Try running: npm install -g ${PACKAGE_NAME}@latest`));
|
|
33
|
-
process.exit(1);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
//# sourceMappingURL=update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAG/D,CAAC;QAEF,yDAAyD;QACzD,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9E,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC;QAE3B,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE/E,QAAQ,CAAC,kBAAkB,YAAY,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAExE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,YAAY,SAAS,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/dist/src/constants.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/** Production API endpoint. Override with PARKER_API_URL env var. */
|
|
2
|
-
export declare const DEFAULT_API_URL = "https://api.parkercto.com";
|
|
3
|
-
/** Directory for global Parker CLI config and auth storage (~/.parker/). */
|
|
4
|
-
export declare const PARKER_GLOBAL_DIR: string;
|
|
5
|
-
/** Path to the persisted auth context file (~/.parker/auth.json). */
|
|
6
|
-
export declare const AUTH_FILE_PATH: string;
|
|
7
|
-
/** Repo-level Parker config directory name. */
|
|
8
|
-
export declare const PARKER_REPO_DIR = ".parker";
|
|
9
|
-
/** Repo-level config file name within the .parker directory. */
|
|
10
|
-
export declare const PARKER_REPO_CONFIG_FILE = "config.json";
|
|
11
|
-
/** npm package name for the CLI. */
|
|
12
|
-
export declare const PACKAGE_NAME = "@parkercto/cli";
|
|
13
|
-
/** Local port used for the OAuth callback server during `parker enable`. */
|
|
14
|
-
export declare const OAUTH_CALLBACK_PORT = 9999;
|
|
15
|
-
/** Path the OAuth callback server listens on for the redirect. */
|
|
16
|
-
export declare const OAUTH_CALLBACK_PATH = "/callback";
|
|
17
|
-
/** Hook command strings for Claude Code session hooks. */
|
|
18
|
-
export declare const HOOK_SESSION_START_COMMAND = "parker hook session-start";
|
|
19
|
-
export declare const HOOK_EVENT_COMMAND = "parker hook event";
|
|
20
|
-
export declare const HOOK_CONTEXT_COMMAND = "parker hook context";
|
|
21
|
-
export declare const HOOK_SESSION_END_COMMAND = "parker hook session-end";
|
|
22
|
-
/** Prefix used to identify Parker-owned hooks when filtering .claude/settings.json. */
|
|
23
|
-
export declare const PARKER_HOOK_PREFIX = "parker ";
|
|
24
|
-
/** URL where users sign up and create teams. */
|
|
25
|
-
export declare const SIGNUP_URL = "https://app.parkercto.com";
|
|
26
|
-
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA,qEAAqE;AACrE,eAAO,MAAM,eAAe,8BAA8B,CAAC;AAE3D,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,QAAqC,CAAC;AAEpE,qEAAqE;AACrE,eAAO,MAAM,cAAc,QAA4C,CAAC;AAExE,+CAA+C;AAC/C,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AAErD,oCAAoC;AACpC,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAE7C,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,kEAAkE;AAClE,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAE/C,0DAA0D;AAC1D,eAAO,MAAM,0BAA0B,8BAA8B,CAAC;AACtE,eAAO,MAAM,kBAAkB,sBAAsB,CAAC;AACtD,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAC1D,eAAO,MAAM,wBAAwB,4BAA4B,CAAC;AAElE,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,gDAAgD;AAChD,eAAO,MAAM,UAAU,8BAA8B,CAAC"}
|
package/dist/src/constants.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import os from "os";
|
|
3
|
-
/** Production API endpoint. Override with PARKER_API_URL env var. */
|
|
4
|
-
export const DEFAULT_API_URL = "https://api.parkercto.com";
|
|
5
|
-
/** Directory for global Parker CLI config and auth storage (~/.parker/). */
|
|
6
|
-
export const PARKER_GLOBAL_DIR = path.join(os.homedir(), ".parker");
|
|
7
|
-
/** Path to the persisted auth context file (~/.parker/auth.json). */
|
|
8
|
-
export const AUTH_FILE_PATH = path.join(PARKER_GLOBAL_DIR, "auth.json");
|
|
9
|
-
/** Repo-level Parker config directory name. */
|
|
10
|
-
export const PARKER_REPO_DIR = ".parker";
|
|
11
|
-
/** Repo-level config file name within the .parker directory. */
|
|
12
|
-
export const PARKER_REPO_CONFIG_FILE = "config.json";
|
|
13
|
-
/** npm package name for the CLI. */
|
|
14
|
-
export const PACKAGE_NAME = "@parkercto/cli";
|
|
15
|
-
/** Local port used for the OAuth callback server during `parker enable`. */
|
|
16
|
-
export const OAUTH_CALLBACK_PORT = 9999;
|
|
17
|
-
/** Path the OAuth callback server listens on for the redirect. */
|
|
18
|
-
export const OAUTH_CALLBACK_PATH = "/callback";
|
|
19
|
-
/** Hook command strings for Claude Code session hooks. */
|
|
20
|
-
export const HOOK_SESSION_START_COMMAND = "parker hook session-start";
|
|
21
|
-
export const HOOK_EVENT_COMMAND = "parker hook event";
|
|
22
|
-
export const HOOK_CONTEXT_COMMAND = "parker hook context";
|
|
23
|
-
export const HOOK_SESSION_END_COMMAND = "parker hook session-end";
|
|
24
|
-
/** Prefix used to identify Parker-owned hooks when filtering .claude/settings.json. */
|
|
25
|
-
export const PARKER_HOOK_PREFIX = "parker ";
|
|
26
|
-
/** URL where users sign up and create teams. */
|
|
27
|
-
export const SIGNUP_URL = "https://app.parkercto.com";
|
|
28
|
-
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,qEAAqE;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG,2BAA2B,CAAC;AAE3D,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAEpE,qEAAqE;AACrE,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;AAExE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AAEzC,gEAAgE;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAC;AAErD,oCAAoC;AACpC,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE7C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,kEAAkE;AAClE,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAE/C,0DAA0D;AAC1D,MAAM,CAAC,MAAM,0BAA0B,GAAG,2BAA2B,CAAC;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC;AAElE,uFAAuF;AACvF,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAE5C,gDAAgD;AAChD,MAAM,CAAC,MAAM,UAAU,GAAG,2BAA2B,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checks for a newer CLI version and, if found, installs it and re-execs
|
|
3
|
-
* the current command transparently. Uses the update-notifier cache so this
|
|
4
|
-
* is a no-op most of the time (no network call unless the cache is stale).
|
|
5
|
-
*
|
|
6
|
-
* Call this before any command logic runs. It is safe to call unconditionally —
|
|
7
|
-
* it short-circuits immediately when running inside a re-exec.
|
|
8
|
-
*/
|
|
9
|
-
export declare function autoUpdateIfNeeded(): void;
|
|
10
|
-
//# sourceMappingURL=auto-update.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-update.d.ts","sourceRoot":"","sources":["../../../src/lib/auto-update.ts"],"names":[],"mappings":"AAoFA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAiCzC"}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { execSync, spawn } from "child_process";
|
|
2
|
-
import { createRequire } from "module";
|
|
3
|
-
import { fileURLToPath } from "url";
|
|
4
|
-
import { dirname, resolve } from "path";
|
|
5
|
-
import chalk from "chalk";
|
|
6
|
-
import updateNotifier from "update-notifier";
|
|
7
|
-
import { PACKAGE_NAME } from "../constants.js";
|
|
8
|
-
/**
|
|
9
|
-
* Environment variable set during re-exec to prevent infinite update loops.
|
|
10
|
-
* When present, the CLI skips the auto-update check entirely.
|
|
11
|
-
*/
|
|
12
|
-
const REEXEC_ENV_VAR = "PARKER_SKIP_AUTO_UPDATE";
|
|
13
|
-
/** How often (in ms) to check the npm registry for a newer version. */
|
|
14
|
-
const UPDATE_CHECK_INTERVAL_MS = 6 * 60 * 60 * 1000; // 6 hours
|
|
15
|
-
/**
|
|
16
|
-
* Returns true if `candidate` is strictly newer than `current` using semver comparison.
|
|
17
|
-
*/
|
|
18
|
-
function isNewerVersion(candidate, current) {
|
|
19
|
-
const parse = (v) => v.split(".").map(Number);
|
|
20
|
-
const [cMajor, cMinor = 0, cPatch = 0] = parse(candidate);
|
|
21
|
-
const [major, minor = 0, patch = 0] = parse(current);
|
|
22
|
-
if (cMajor !== major)
|
|
23
|
-
return cMajor > major;
|
|
24
|
-
if (cMinor !== minor)
|
|
25
|
-
return cMinor > minor;
|
|
26
|
-
return cPatch > patch;
|
|
27
|
-
}
|
|
28
|
-
function loadPackageJson() {
|
|
29
|
-
const require = createRequire(import.meta.url);
|
|
30
|
-
const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), "../..");
|
|
31
|
-
return require(resolve(packageRoot, "package.json"));
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Installs the latest version of the CLI globally via npm.
|
|
35
|
-
* Returns true if the install succeeded, false otherwise.
|
|
36
|
-
*/
|
|
37
|
-
function installLatestVersion(latestVersion) {
|
|
38
|
-
try {
|
|
39
|
-
console.error(chalk.cyan(`Updating ${PACKAGE_NAME} ${chalk.dim("→")} ${chalk.green(latestVersion)}...`));
|
|
40
|
-
execSync(`npm install -g ${PACKAGE_NAME}@latest`, {
|
|
41
|
-
stdio: ["ignore", "ignore", "inherit"],
|
|
42
|
-
});
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
|
-
catch {
|
|
46
|
-
console.error(chalk.yellow("Auto-update failed. Continuing with current version."));
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Re-executes the CLI with the same arguments using the newly installed version.
|
|
52
|
-
* This replaces the current process — it does not return on success.
|
|
53
|
-
*/
|
|
54
|
-
function reExecWithUpdatedBinary() {
|
|
55
|
-
const child = spawn(process.argv[0], process.argv.slice(1), {
|
|
56
|
-
stdio: "inherit",
|
|
57
|
-
env: { ...process.env, [REEXEC_ENV_VAR]: "1" },
|
|
58
|
-
});
|
|
59
|
-
child.on("exit", (code) => {
|
|
60
|
-
process.exit(code ?? 0);
|
|
61
|
-
});
|
|
62
|
-
child.on("error", () => {
|
|
63
|
-
process.exit(1);
|
|
64
|
-
});
|
|
65
|
-
// Keep the parent process alive until the child exits.
|
|
66
|
-
// The 'exit' handler above ensures we propagate the exit code.
|
|
67
|
-
// This unreachable throw satisfies the `never` return type.
|
|
68
|
-
throw new Error("unreachable");
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Checks for a newer CLI version and, if found, installs it and re-execs
|
|
72
|
-
* the current command transparently. Uses the update-notifier cache so this
|
|
73
|
-
* is a no-op most of the time (no network call unless the cache is stale).
|
|
74
|
-
*
|
|
75
|
-
* Call this before any command logic runs. It is safe to call unconditionally —
|
|
76
|
-
* it short-circuits immediately when running inside a re-exec.
|
|
77
|
-
*/
|
|
78
|
-
export function autoUpdateIfNeeded() {
|
|
79
|
-
// Prevent infinite re-exec loops.
|
|
80
|
-
if (process.env[REEXEC_ENV_VAR]) {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
// Skip auto-update during local development (running via tsx).
|
|
84
|
-
if (process.argv[1]?.endsWith(".ts")) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
const packageJson = loadPackageJson();
|
|
88
|
-
const notifier = updateNotifier({
|
|
89
|
-
pkg: packageJson,
|
|
90
|
-
updateCheckInterval: UPDATE_CHECK_INTERVAL_MS,
|
|
91
|
-
});
|
|
92
|
-
// update-notifier stores its last check result on disk. If the cached result
|
|
93
|
-
// indicates a newer version is available, act on it synchronously.
|
|
94
|
-
if (!notifier.update) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
// Don't "update" to the same or older version (can happen with stale cache).
|
|
98
|
-
if (!isNewerVersion(notifier.update.latest, packageJson.version)) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
const installed = installLatestVersion(notifier.update.latest);
|
|
102
|
-
if (installed) {
|
|
103
|
-
reExecWithUpdatedBinary();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=auto-update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../../../src/lib/auto-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export declare class GitError extends Error {
|
|
2
|
-
command: string;
|
|
3
|
-
exitCode: number;
|
|
4
|
-
constructor(command: string, exitCode: number, message: string);
|
|
5
|
-
}
|
|
6
|
-
export declare function runGitLocal(...args: string[]): Promise<string>;
|
|
7
|
-
export declare function getGitRoot(): Promise<string>;
|
|
8
|
-
//# sourceMappingURL=local-git.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-git.d.ts","sourceRoot":"","sources":["../../../src/lib/local-git.ts"],"names":[],"mappings":"AAEA,qBAAa,QAAS,SAAQ,KAAK;IAExB,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,MAAM;gBADhB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM;CAKlB;AAED,wBAAsB,WAAW,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBpE;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAMlD"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { execFileSync } from "child_process";
|
|
2
|
-
export class GitError extends Error {
|
|
3
|
-
command;
|
|
4
|
-
exitCode;
|
|
5
|
-
constructor(command, exitCode, message) {
|
|
6
|
-
super(`Git command failed: ${command}\n${message}`);
|
|
7
|
-
this.command = command;
|
|
8
|
-
this.exitCode = exitCode;
|
|
9
|
-
this.name = "GitError";
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export async function runGitLocal(...args) {
|
|
13
|
-
try {
|
|
14
|
-
const result = execFileSync("git", args, {
|
|
15
|
-
encoding: "utf8",
|
|
16
|
-
cwd: process.cwd(),
|
|
17
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
18
|
-
});
|
|
19
|
-
return result;
|
|
20
|
-
}
|
|
21
|
-
catch (error) {
|
|
22
|
-
const exitCode = error instanceof Error && "status" in error ? error.status : 1;
|
|
23
|
-
const stderr = error instanceof Error && "stderr" in error ? String(error.stderr) : "";
|
|
24
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
25
|
-
throw new GitError(`git ${args.join(" ")}`, exitCode || 1, stderr || message);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
export async function getGitRoot() {
|
|
29
|
-
try {
|
|
30
|
-
return (await runGitLocal("rev-parse", "--show-toplevel")).trim();
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
throw new Error("Not in a git repository");
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=local-git.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-git.js","sourceRoot":"","sources":["../../../src/lib/local-git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,OAAO,QAAS,SAAQ,KAAK;IAExB;IACA;IAFT,YACS,OAAe,EACf,QAAgB,EACvB,OAAe;QAEf,KAAK,CAAC,uBAAuB,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;QAJ7C,YAAO,GAAP,OAAO,CAAQ;QACf,aAAQ,GAAR,QAAQ,CAAQ;QAIvB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAG,IAAc;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;YACvC,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAE,KAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxG,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAE,KAA6B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChH,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,QAAQ,CAChB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EACvB,QAAQ,IAAI,CAAC,EACb,MAAM,IAAI,OAAO,CAClB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,WAAW,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|
package/dist/src/lib/redact.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Secret redaction utilities for SACL event data.
|
|
3
|
-
* Prevents leaking secrets, credentials, or large file contents to the server.
|
|
4
|
-
*/
|
|
5
|
-
/** Returns true if the key name matches a pattern that typically holds secrets. */
|
|
6
|
-
export declare function isSecretKey(key: string): boolean;
|
|
7
|
-
/**
|
|
8
|
-
* Redacts values that look like secrets from an object.
|
|
9
|
-
* - Keys matching secret patterns have their values replaced with [REDACTED].
|
|
10
|
-
* - String values over 500 chars are replaced with [CONTENT_REDACTED] (likely file contents or command output).
|
|
11
|
-
*/
|
|
12
|
-
export declare function redactSecrets(obj: Record<string, unknown>): Record<string, unknown>;
|
|
13
|
-
//# sourceMappingURL=redact.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../../src/lib/redact.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYnF"}
|