@parkercto/cli 0.2.2 → 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 +5 -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/bin/preuninstall.d.ts +0 -10
- package/dist/src/bin/preuninstall.d.ts.map +0 -1
- package/dist/src/bin/preuninstall.js +0 -51
- package/dist/src/bin/preuninstall.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 -243
- 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 -28
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js +0 -30
- package/dist/src/constants.js.map +0 -1
- package/dist/src/lib/auto-update.d.ts +0 -14
- 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/auto-update_tests.d.ts +0 -2
- package/dist/src/lib/auto-update_tests.d.ts.map +0 -1
- package/dist/src/lib/auto-update_tests.js +0 -36
- package/dist/src/lib/auto-update_tests.js.map +0 -1
- package/dist/src/lib/claude-settings.d.ts +0 -38
- package/dist/src/lib/claude-settings.d.ts.map +0 -1
- package/dist/src/lib/claude-settings.js +0 -66
- package/dist/src/lib/claude-settings.js.map +0 -1
- package/dist/src/lib/claude-settings_tests.d.ts +0 -2
- package/dist/src/lib/claude-settings_tests.d.ts.map +0 -1
- package/dist/src/lib/claude-settings_tests.js +0 -117
- package/dist/src/lib/claude-settings_tests.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/project-registry.d.ts +0 -13
- package/dist/src/lib/project-registry.d.ts.map +0 -1
- package/dist/src/lib/project-registry.js +0 -115
- package/dist/src/lib/project-registry.js.map +0 -1
- package/dist/src/lib/project-registry_tests.d.ts +0 -2
- package/dist/src/lib/project-registry_tests.d.ts.map +0 -1
- package/dist/src/lib/project-registry_tests.js +0 -75
- package/dist/src/lib/project-registry_tests.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,75 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { isSecretKey, redactSecrets } from "./redact.js";
|
|
3
|
-
describe("isSecretKey", () => {
|
|
4
|
-
it("detects common secret key patterns", () => {
|
|
5
|
-
expect(isSecretKey("API_KEY")).toBe(true);
|
|
6
|
-
expect(isSecretKey("AWS_SECRET_ACCESS_KEY")).toBe(true);
|
|
7
|
-
expect(isSecretKey("GITHUB_TOKEN")).toBe(true);
|
|
8
|
-
expect(isSecretKey("DB_PASSWORD")).toBe(true);
|
|
9
|
-
expect(isSecretKey("PRIVATE_KEY")).toBe(true);
|
|
10
|
-
expect(isSecretKey("MY_CREDENTIAL")).toBe(true);
|
|
11
|
-
});
|
|
12
|
-
it("is case-insensitive", () => {
|
|
13
|
-
expect(isSecretKey("api_key")).toBe(true);
|
|
14
|
-
expect(isSecretKey("ApiKey")).toBe(true);
|
|
15
|
-
expect(isSecretKey("github_token")).toBe(true);
|
|
16
|
-
});
|
|
17
|
-
it("returns false for non-secret keys", () => {
|
|
18
|
-
expect(isSecretKey("filePath")).toBe(false);
|
|
19
|
-
expect(isSecretKey("toolName")).toBe(false);
|
|
20
|
-
expect(isSecretKey("success")).toBe(false);
|
|
21
|
-
expect(isSecretKey("timestamp")).toBe(false);
|
|
22
|
-
// Note: "keyboard" matches because it contains "KEY" — this is a deliberate
|
|
23
|
-
// false-positive tradeoff for security (better to over-redact than leak)
|
|
24
|
-
expect(isSecretKey("username")).toBe(false);
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
describe("redactSecrets", () => {
|
|
28
|
-
it("redacts values for keys matching secret patterns", () => {
|
|
29
|
-
const input = {
|
|
30
|
-
API_KEY: "sk-abc123",
|
|
31
|
-
toolName: "Read",
|
|
32
|
-
DB_PASSWORD: "hunter2",
|
|
33
|
-
};
|
|
34
|
-
const result = redactSecrets(input);
|
|
35
|
-
expect(result.API_KEY).toBe("[REDACTED]");
|
|
36
|
-
expect(result.toolName).toBe("Read");
|
|
37
|
-
expect(result.DB_PASSWORD).toBe("[REDACTED]");
|
|
38
|
-
});
|
|
39
|
-
it("redacts long string values as likely file content", () => {
|
|
40
|
-
const longContent = "x".repeat(501);
|
|
41
|
-
const input = {
|
|
42
|
-
output: longContent,
|
|
43
|
-
toolName: "Bash",
|
|
44
|
-
};
|
|
45
|
-
const result = redactSecrets(input);
|
|
46
|
-
expect(result.output).toBe("[CONTENT_REDACTED]");
|
|
47
|
-
expect(result.toolName).toBe("Bash");
|
|
48
|
-
});
|
|
49
|
-
it("preserves short string values", () => {
|
|
50
|
-
const input = {
|
|
51
|
-
filePath: "src/app.ts",
|
|
52
|
-
success: true,
|
|
53
|
-
count: 42,
|
|
54
|
-
};
|
|
55
|
-
const result = redactSecrets(input);
|
|
56
|
-
expect(result.filePath).toBe("src/app.ts");
|
|
57
|
-
expect(result.success).toBe(true);
|
|
58
|
-
expect(result.count).toBe(42);
|
|
59
|
-
});
|
|
60
|
-
it("preserves exactly 500-char strings (threshold is >500)", () => {
|
|
61
|
-
const exactlyFiveHundred = "x".repeat(500);
|
|
62
|
-
const result = redactSecrets({ content: exactlyFiveHundred });
|
|
63
|
-
expect(result.content).toBe(exactlyFiveHundred);
|
|
64
|
-
});
|
|
65
|
-
it("handles empty object", () => {
|
|
66
|
-
expect(redactSecrets({})).toEqual({});
|
|
67
|
-
});
|
|
68
|
-
it("handles null and undefined values", () => {
|
|
69
|
-
const input = { filePath: null, other: undefined };
|
|
70
|
-
const result = redactSecrets(input);
|
|
71
|
-
expect(result.filePath).toBeNull();
|
|
72
|
-
expect(result.other).toBeUndefined();
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
//# sourceMappingURL=redact_tests.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redact_tests.js","sourceRoot":"","sources":["../../../src/lib/redact_tests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export interface RepoConfig {
|
|
2
|
-
teamCode: string;
|
|
3
|
-
}
|
|
4
|
-
/**
|
|
5
|
-
* Loads the repo-level Parker config, or null if it doesn't exist.
|
|
6
|
-
* Throws on permission errors, corrupt JSON, or other unexpected failures.
|
|
7
|
-
*/
|
|
8
|
-
export declare function loadRepoConfig(): Promise<RepoConfig | null>;
|
|
9
|
-
/**
|
|
10
|
-
* Saves the repo-level Parker config, creating .parker/ if needed.
|
|
11
|
-
*/
|
|
12
|
-
export declare function saveRepoConfig(config: RepoConfig): Promise<void>;
|
|
13
|
-
//# sourceMappingURL=repo-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repo-config.d.ts","sourceRoot":"","sources":["../../../src/lib/repo-config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAWD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAWjE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtE"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import fs from "fs/promises";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
import { PARKER_REPO_DIR, PARKER_REPO_CONFIG_FILE } from "../constants.js";
|
|
4
|
-
import { getGitRoot } from "./local-git.js";
|
|
5
|
-
/**
|
|
6
|
-
* Returns the path to the repo-level .parker/config.json.
|
|
7
|
-
* Throws if not in a git repository.
|
|
8
|
-
*/
|
|
9
|
-
async function getRepoConfigPath() {
|
|
10
|
-
const root = await getGitRoot();
|
|
11
|
-
return join(root, PARKER_REPO_DIR, PARKER_REPO_CONFIG_FILE);
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Loads the repo-level Parker config, or null if it doesn't exist.
|
|
15
|
-
* Throws on permission errors, corrupt JSON, or other unexpected failures.
|
|
16
|
-
*/
|
|
17
|
-
export async function loadRepoConfig() {
|
|
18
|
-
try {
|
|
19
|
-
const configPath = await getRepoConfigPath();
|
|
20
|
-
const data = await fs.readFile(configPath, "utf-8");
|
|
21
|
-
return JSON.parse(data);
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
throw error;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Saves the repo-level Parker config, creating .parker/ if needed.
|
|
32
|
-
*/
|
|
33
|
-
export async function saveRepoConfig(config) {
|
|
34
|
-
const root = await getGitRoot();
|
|
35
|
-
const parkerDir = join(root, PARKER_REPO_DIR);
|
|
36
|
-
await fs.mkdir(parkerDir, { recursive: true });
|
|
37
|
-
const configPath = join(parkerDir, PARKER_REPO_CONFIG_FILE);
|
|
38
|
-
await fs.writeFile(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=repo-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repo-config.js","sourceRoot":"","sources":["../../../src/lib/repo-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAM5C;;;GAGG;AACH,KAAK,UAAU,iBAAiB;IAC9B,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;IAChC,OAAO,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;IACxC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpG,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAkB;IACrD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export interface SessionState {
|
|
2
|
-
sessionId: string;
|
|
3
|
-
teamId: string;
|
|
4
|
-
engineerId: string;
|
|
5
|
-
apiUrl: string;
|
|
6
|
-
token: string;
|
|
7
|
-
}
|
|
8
|
-
/** Persists session state to a temp file so subsequent hook invocations can read it. */
|
|
9
|
-
export declare function saveSessionState(claudeSessionId: string, state: SessionState): Promise<void>;
|
|
10
|
-
/**
|
|
11
|
-
* Loads session state from the temp file.
|
|
12
|
-
* Returns null if the file does not exist or is corrupt (e.g., ENOENT, bad JSON).
|
|
13
|
-
*/
|
|
14
|
-
export declare function loadSessionState(claudeSessionId: string): Promise<SessionState | null>;
|
|
15
|
-
/**
|
|
16
|
-
* Deletes the session state temp file.
|
|
17
|
-
* Logs non-ENOENT errors to stderr (ENOENT means already cleaned up).
|
|
18
|
-
*/
|
|
19
|
-
export declare function clearSessionState(claudeSessionId: string): Promise<void>;
|
|
20
|
-
//# sourceMappingURL=session-state.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../../../src/lib/session-state.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAUD,wFAAwF;AACxF,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAY9B;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import fs from "fs/promises";
|
|
2
|
-
import path from "path";
|
|
3
|
-
import os from "os";
|
|
4
|
-
const SESSION_STATE_PREFIX = "parker-session-";
|
|
5
|
-
/**
|
|
6
|
-
* Returns the path to the session state file for the given Claude session ID.
|
|
7
|
-
* Uses /tmp/parker-session-<claudeSessionId>.json for cross-hook state sharing.
|
|
8
|
-
*/
|
|
9
|
-
function getSessionStatePath(claudeSessionId) {
|
|
10
|
-
return path.join(os.tmpdir(), `${SESSION_STATE_PREFIX}${claudeSessionId}.json`);
|
|
11
|
-
}
|
|
12
|
-
/** Persists session state to a temp file so subsequent hook invocations can read it. */
|
|
13
|
-
export async function saveSessionState(claudeSessionId, state) {
|
|
14
|
-
const filePath = getSessionStatePath(claudeSessionId);
|
|
15
|
-
await fs.writeFile(filePath, JSON.stringify(state));
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Loads session state from the temp file.
|
|
19
|
-
* Returns null if the file does not exist or is corrupt (e.g., ENOENT, bad JSON).
|
|
20
|
-
*/
|
|
21
|
-
export async function loadSessionState(claudeSessionId) {
|
|
22
|
-
const filePath = getSessionStatePath(claudeSessionId);
|
|
23
|
-
try {
|
|
24
|
-
const data = await fs.readFile(filePath, "utf-8");
|
|
25
|
-
return JSON.parse(data);
|
|
26
|
-
}
|
|
27
|
-
catch (err) {
|
|
28
|
-
// ENOENT is expected when no session is active; other errors are logged
|
|
29
|
-
if (err instanceof Error && "code" in err && err.code !== "ENOENT") {
|
|
30
|
-
process.stderr.write(`parker: failed to load session state: ${err.message}\n`);
|
|
31
|
-
}
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Deletes the session state temp file.
|
|
37
|
-
* Logs non-ENOENT errors to stderr (ENOENT means already cleaned up).
|
|
38
|
-
*/
|
|
39
|
-
export async function clearSessionState(claudeSessionId) {
|
|
40
|
-
const filePath = getSessionStatePath(claudeSessionId);
|
|
41
|
-
try {
|
|
42
|
-
await fs.unlink(filePath);
|
|
43
|
-
}
|
|
44
|
-
catch (err) {
|
|
45
|
-
if (err instanceof Error && "code" in err && err.code !== "ENOENT") {
|
|
46
|
-
process.stderr.write(`parker: failed to clear session state: ${err.message}\n`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=session-state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../../src/lib/session-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAU/C;;;GAGG;AACH,SAAS,mBAAmB,CAAC,eAAuB;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,oBAAoB,GAAG,eAAe,OAAO,CAAC,CAAC;AAClF,CAAC;AAED,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,eAAuB,EACvB,KAAmB;IAEnB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACtD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,eAAuB;IAEvB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wEAAwE;QACxE,IAAI,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,eAAuB;IAEvB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-state_tests.d.ts","sourceRoot":"","sources":["../../../src/lib/session-state_tests.ts"],"names":[],"mappings":""}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, afterEach } from "vitest";
|
|
2
|
-
import { saveSessionState, loadSessionState, clearSessionState } from "./session-state.js";
|
|
3
|
-
const TEST_SESSION_ID = "test-session-vitest-" + Date.now();
|
|
4
|
-
const TEST_STATE = {
|
|
5
|
-
sessionId: "sess-123",
|
|
6
|
-
teamId: "team-456",
|
|
7
|
-
engineerId: "eng-789",
|
|
8
|
-
apiUrl: "http://localhost:4000",
|
|
9
|
-
token: "test-token",
|
|
10
|
-
};
|
|
11
|
-
afterEach(async () => {
|
|
12
|
-
await clearSessionState(TEST_SESSION_ID);
|
|
13
|
-
});
|
|
14
|
-
describe("session-state", () => {
|
|
15
|
-
it("saves and loads session state", async () => {
|
|
16
|
-
await saveSessionState(TEST_SESSION_ID, TEST_STATE);
|
|
17
|
-
const loaded = await loadSessionState(TEST_SESSION_ID);
|
|
18
|
-
expect(loaded).toEqual(TEST_STATE);
|
|
19
|
-
});
|
|
20
|
-
it("returns null when no state file exists", async () => {
|
|
21
|
-
const loaded = await loadSessionState("nonexistent-session-id");
|
|
22
|
-
expect(loaded).toBeNull();
|
|
23
|
-
});
|
|
24
|
-
it("clears session state", async () => {
|
|
25
|
-
await saveSessionState(TEST_SESSION_ID, TEST_STATE);
|
|
26
|
-
await clearSessionState(TEST_SESSION_ID);
|
|
27
|
-
const loaded = await loadSessionState(TEST_SESSION_ID);
|
|
28
|
-
expect(loaded).toBeNull();
|
|
29
|
-
});
|
|
30
|
-
it("clearSessionState does not throw for nonexistent file", async () => {
|
|
31
|
-
await expect(clearSessionState("nonexistent-session-id")).resolves.toBeUndefined();
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
//# sourceMappingURL=session-state_tests.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-state_tests.js","sourceRoot":"","sources":["../../../src/lib/session-state_tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAqB,MAAM,oBAAoB,CAAC;AAE9G,MAAM,eAAe,GAAG,sBAAsB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE5D,MAAM,UAAU,GAAiB;IAC/B,SAAS,EAAE,UAAU;IACrB,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,uBAAuB;IAC/B,KAAK,EAAE,YAAY;CACpB,CAAC;AAEF,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,gBAAgB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAEvD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;QAEhE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,gBAAgB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,iBAAiB,CAAC,eAAe,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAEvD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IACrF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/render/help.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAqBhD"}
|
package/dist/src/render/help.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
export function renderHelp(version) {
|
|
3
|
-
const cmd = (name) => chalk.green(name);
|
|
4
|
-
const arg = (name) => chalk.yellow(name);
|
|
5
|
-
const dim = chalk.dim;
|
|
6
|
-
console.log("");
|
|
7
|
-
console.log(` ${chalk.bold("Parker")} ${dim(`v${version}`)} — Engineering team intelligence`);
|
|
8
|
-
console.log("");
|
|
9
|
-
// Getting Started
|
|
10
|
-
console.log(chalk.bold(" Getting Started"));
|
|
11
|
-
console.log(` ${cmd("parker enable")} Enable Parker for this repo`);
|
|
12
|
-
console.log(` ${cmd("parker disable")} Remove Parker from this repo`);
|
|
13
|
-
console.log(` ${cmd("parker join")} ${arg("<code>")} Join an existing team`);
|
|
14
|
-
console.log("");
|
|
15
|
-
// Tips
|
|
16
|
-
console.log(dim(" Tips"));
|
|
17
|
-
console.log(dim(` Run ${chalk.reset("parker <command> --help")} for detailed options`));
|
|
18
|
-
console.log(dim(` Run ${chalk.reset("parker update")} to update to the latest version`));
|
|
19
|
-
console.log("");
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=help.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/render/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IAEtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,kCAAkC,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,eAAe,CAAC,+CAA+C,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,gBAAgB,CAAC,+CAA+C,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,oCAAoC,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO;IACP,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|