@tpsdev-ai/cli 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -0
- package/bin/tps.cjs +22 -0
- package/bin/tps.ts +435 -0
- package/package.json +29 -5
- package/dist/bin/tps.d.ts +0 -3
- package/dist/bin/tps.d.ts.map +0 -1
- package/dist/bin/tps.js +0 -414
- package/dist/bin/tps.js.map +0 -1
- package/dist/src/cli/hire.d.ts +0 -16
- package/dist/src/cli/hire.d.ts.map +0 -1
- package/dist/src/cli/hire.js +0 -176
- package/dist/src/cli/hire.js.map +0 -1
- package/dist/src/cli/office.d.ts +0 -7
- package/dist/src/cli/office.d.ts.map +0 -1
- package/dist/src/cli/office.js +0 -51
- package/dist/src/cli/office.js.map +0 -1
- package/dist/src/cli/review.d.ts +0 -9
- package/dist/src/cli/review.d.ts.map +0 -1
- package/dist/src/cli/review.js +0 -109
- package/dist/src/cli/review.js.map +0 -1
- package/dist/src/cli/roster.d.ts +0 -6
- package/dist/src/cli/roster.d.ts.map +0 -1
- package/dist/src/cli/roster.js +0 -60
- package/dist/src/cli/roster.js.map +0 -1
- package/dist/src/commands/backup.d.ts +0 -19
- package/dist/src/commands/backup.d.ts.map +0 -1
- package/dist/src/commands/backup.js +0 -595
- package/dist/src/commands/backup.js.map +0 -1
- package/dist/src/commands/bootstrap.d.ts +0 -7
- package/dist/src/commands/bootstrap.d.ts.map +0 -1
- package/dist/src/commands/bootstrap.js +0 -255
- package/dist/src/commands/bootstrap.js.map +0 -1
- package/dist/src/commands/branch.d.ts +0 -14
- package/dist/src/commands/branch.d.ts.map +0 -1
- package/dist/src/commands/branch.js +0 -395
- package/dist/src/commands/branch.js.map +0 -1
- package/dist/src/commands/context.d.ts +0 -9
- package/dist/src/commands/context.d.ts.map +0 -1
- package/dist/src/commands/context.js +0 -57
- package/dist/src/commands/context.js.map +0 -1
- package/dist/src/commands/git.d.ts +0 -8
- package/dist/src/commands/git.d.ts.map +0 -1
- package/dist/src/commands/git.js +0 -53
- package/dist/src/commands/git.js.map +0 -1
- package/dist/src/commands/identity.d.ts +0 -13
- package/dist/src/commands/identity.d.ts.map +0 -1
- package/dist/src/commands/identity.js +0 -231
- package/dist/src/commands/identity.js.map +0 -1
- package/dist/src/commands/mail.d.ts +0 -12
- package/dist/src/commands/mail.d.ts.map +0 -1
- package/dist/src/commands/mail.js +0 -251
- package/dist/src/commands/mail.js.map +0 -1
- package/dist/src/commands/office-manager.d.ts +0 -147
- package/dist/src/commands/office-manager.d.ts.map +0 -1
- package/dist/src/commands/office-manager.js +0 -171
- package/dist/src/commands/office-manager.js.map +0 -1
- package/dist/src/commands/office.d.ts +0 -12
- package/dist/src/commands/office.d.ts.map +0 -1
- package/dist/src/commands/office.js +0 -480
- package/dist/src/commands/office.js.map +0 -1
- package/dist/src/commands/roster.d.ts +0 -10
- package/dist/src/commands/roster.d.ts.map +0 -1
- package/dist/src/commands/roster.js +0 -143
- package/dist/src/commands/roster.js.map +0 -1
- package/dist/src/commands/secrets.d.ts +0 -9
- package/dist/src/commands/secrets.d.ts.map +0 -1
- package/dist/src/commands/secrets.js +0 -54
- package/dist/src/commands/secrets.js.map +0 -1
- package/dist/src/commands/status.d.ts +0 -33
- package/dist/src/commands/status.d.ts.map +0 -1
- package/dist/src/commands/status.js +0 -407
- package/dist/src/commands/status.js.map +0 -1
- package/dist/src/generators/brief.d.ts +0 -6
- package/dist/src/generators/brief.d.ts.map +0 -1
- package/dist/src/generators/brief.js +0 -33
- package/dist/src/generators/brief.js.map +0 -1
- package/dist/src/generators/claude-code.d.ts +0 -18
- package/dist/src/generators/claude-code.d.ts.map +0 -1
- package/dist/src/generators/claude-code.js +0 -85
- package/dist/src/generators/claude-code.js.map +0 -1
- package/dist/src/generators/codex.d.ts +0 -23
- package/dist/src/generators/codex.d.ts.map +0 -1
- package/dist/src/generators/codex.js +0 -83
- package/dist/src/generators/codex.js.map +0 -1
- package/dist/src/generators/ollama.d.ts +0 -18
- package/dist/src/generators/ollama.d.ts.map +0 -1
- package/dist/src/generators/ollama.js +0 -97
- package/dist/src/generators/ollama.js.map +0 -1
- package/dist/src/generators/openclaw.d.ts +0 -15
- package/dist/src/generators/openclaw.d.ts.map +0 -1
- package/dist/src/generators/openclaw.js +0 -107
- package/dist/src/generators/openclaw.js.map +0 -1
- package/dist/src/generators/registry.d.ts +0 -36
- package/dist/src/generators/registry.d.ts.map +0 -1
- package/dist/src/generators/registry.js +0 -99
- package/dist/src/generators/registry.js.map +0 -1
- package/dist/src/schema/manifest.d.ts +0 -287
- package/dist/src/schema/manifest.d.ts.map +0 -1
- package/dist/src/schema/manifest.js +0 -65
- package/dist/src/schema/manifest.js.map +0 -1
- package/dist/src/schema/report.d.ts +0 -166
- package/dist/src/schema/report.d.ts.map +0 -1
- package/dist/src/schema/report.js +0 -90
- package/dist/src/schema/report.js.map +0 -1
- package/dist/src/schema/sanitizer.d.ts +0 -30
- package/dist/src/schema/sanitizer.d.ts.map +0 -1
- package/dist/src/schema/sanitizer.js +0 -99
- package/dist/src/schema/sanitizer.js.map +0 -1
- package/dist/src/soundstage/mock-llm.d.ts +0 -3
- package/dist/src/soundstage/mock-llm.d.ts.map +0 -1
- package/dist/src/soundstage/mock-llm.js +0 -68
- package/dist/src/soundstage/mock-llm.js.map +0 -1
- package/dist/src/utils/agent-info.d.ts +0 -28
- package/dist/src/utils/agent-info.d.ts.map +0 -1
- package/dist/src/utils/agent-info.js +0 -102
- package/dist/src/utils/agent-info.js.map +0 -1
- package/dist/src/utils/archive.d.ts +0 -20
- package/dist/src/utils/archive.d.ts.map +0 -1
- package/dist/src/utils/archive.js +0 -108
- package/dist/src/utils/archive.js.map +0 -1
- package/dist/src/utils/config-inject.d.ts +0 -27
- package/dist/src/utils/config-inject.d.ts.map +0 -1
- package/dist/src/utils/config-inject.js +0 -83
- package/dist/src/utils/config-inject.js.map +0 -1
- package/dist/src/utils/config.d.ts +0 -30
- package/dist/src/utils/config.d.ts.map +0 -1
- package/dist/src/utils/config.js +0 -55
- package/dist/src/utils/config.js.map +0 -1
- package/dist/src/utils/connection-state.d.ts +0 -27
- package/dist/src/utils/connection-state.d.ts.map +0 -1
- package/dist/src/utils/connection-state.js +0 -81
- package/dist/src/utils/connection-state.js.map +0 -1
- package/dist/src/utils/context.d.ts +0 -14
- package/dist/src/utils/context.d.ts.map +0 -1
- package/dist/src/utils/context.js +0 -68
- package/dist/src/utils/context.js.map +0 -1
- package/dist/src/utils/github-webhook.d.ts +0 -3
- package/dist/src/utils/github-webhook.d.ts.map +0 -1
- package/dist/src/utils/github-webhook.js +0 -105
- package/dist/src/utils/github-webhook.js.map +0 -1
- package/dist/src/utils/identity.d.ts +0 -124
- package/dist/src/utils/identity.d.ts.map +0 -1
- package/dist/src/utils/identity.js +0 -434
- package/dist/src/utils/identity.js.map +0 -1
- package/dist/src/utils/internal-mail.d.ts +0 -18
- package/dist/src/utils/internal-mail.d.ts.map +0 -1
- package/dist/src/utils/internal-mail.js +0 -75
- package/dist/src/utils/internal-mail.js.map +0 -1
- package/dist/src/utils/loop-detector.d.ts +0 -27
- package/dist/src/utils/loop-detector.d.ts.map +0 -1
- package/dist/src/utils/loop-detector.js +0 -42
- package/dist/src/utils/loop-detector.js.map +0 -1
- package/dist/src/utils/mail-handler.d.ts +0 -19
- package/dist/src/utils/mail-handler.d.ts.map +0 -1
- package/dist/src/utils/mail-handler.js +0 -94
- package/dist/src/utils/mail-handler.js.map +0 -1
- package/dist/src/utils/mail.d.ts +0 -22
- package/dist/src/utils/mail.d.ts.map +0 -1
- package/dist/src/utils/mail.js +0 -111
- package/dist/src/utils/mail.js.map +0 -1
- package/dist/src/utils/manifest.d.ts +0 -36
- package/dist/src/utils/manifest.d.ts.map +0 -1
- package/dist/src/utils/manifest.js +0 -94
- package/dist/src/utils/manifest.js.map +0 -1
- package/dist/src/utils/noise-ik-transport.d.ts +0 -18
- package/dist/src/utils/noise-ik-transport.d.ts.map +0 -1
- package/dist/src/utils/noise-ik-transport.js +0 -357
- package/dist/src/utils/noise-ik-transport.js.map +0 -1
- package/dist/src/utils/nono.d.ts +0 -72
- package/dist/src/utils/nono.d.ts.map +0 -1
- package/dist/src/utils/nono.js +0 -166
- package/dist/src/utils/nono.js.map +0 -1
- package/dist/src/utils/outbox.d.ts +0 -10
- package/dist/src/utils/outbox.d.ts.map +0 -1
- package/dist/src/utils/outbox.js +0 -29
- package/dist/src/utils/outbox.js.map +0 -1
- package/dist/src/utils/output.d.ts +0 -17
- package/dist/src/utils/output.d.ts.map +0 -1
- package/dist/src/utils/output.js +0 -83
- package/dist/src/utils/output.js.map +0 -1
- package/dist/src/utils/plain-tcp-transport.d.ts +0 -10
- package/dist/src/utils/plain-tcp-transport.d.ts.map +0 -1
- package/dist/src/utils/plain-tcp-transport.js +0 -209
- package/dist/src/utils/plain-tcp-transport.js.map +0 -1
- package/dist/src/utils/provision.d.ts +0 -2
- package/dist/src/utils/provision.d.ts.map +0 -1
- package/dist/src/utils/provision.js +0 -193
- package/dist/src/utils/provision.js.map +0 -1
- package/dist/src/utils/relay.d.ts +0 -30
- package/dist/src/utils/relay.d.ts.map +0 -1
- package/dist/src/utils/relay.js +0 -539
- package/dist/src/utils/relay.js.map +0 -1
- package/dist/src/utils/sandbox.d.ts +0 -37
- package/dist/src/utils/sandbox.d.ts.map +0 -1
- package/dist/src/utils/sandbox.js +0 -126
- package/dist/src/utils/sandbox.js.map +0 -1
- package/dist/src/utils/transport.d.ts +0 -62
- package/dist/src/utils/transport.d.ts.map +0 -1
- package/dist/src/utils/transport.js +0 -75
- package/dist/src/utils/transport.js.map +0 -1
- package/dist/src/utils/vault.d.ts +0 -21
- package/dist/src/utils/vault.d.ts.map +0 -1
- package/dist/src/utils/vault.js +0 -67
- package/dist/src/utils/vault.js.map +0 -1
- package/dist/src/utils/wall.d.ts +0 -5
- package/dist/src/utils/wall.d.ts.map +0 -1
- package/dist/src/utils/wall.js +0 -51
- package/dist/src/utils/wall.js.map +0 -1
- package/dist/src/utils/wire-delivery.d.ts +0 -10
- package/dist/src/utils/wire-delivery.d.ts.map +0 -1
- package/dist/src/utils/wire-delivery.js +0 -57
- package/dist/src/utils/wire-delivery.js.map +0 -1
- package/dist/src/utils/wire-frame.d.ts +0 -10
- package/dist/src/utils/wire-frame.d.ts.map +0 -1
- package/dist/src/utils/wire-frame.js +0 -66
- package/dist/src/utils/wire-frame.js.map +0 -1
- package/dist/src/utils/wire-mail.d.ts +0 -54
- package/dist/src/utils/wire-mail.d.ts.map +0 -1
- package/dist/src/utils/wire-mail.js +0 -24
- package/dist/src/utils/wire-mail.js.map +0 -1
- package/dist/src/utils/workspace.d.ts +0 -14
- package/dist/src/utils/workspace.d.ts.map +0 -1
- package/dist/src/utils/workspace.js +0 -53
- package/dist/src/utils/workspace.js.map +0 -1
- package/dist/src/utils/ws-noise-transport.d.ts +0 -18
- package/dist/src/utils/ws-noise-transport.d.ts.map +0 -1
- package/dist/src/utils/ws-noise-transport.js +0 -356
- package/dist/src/utils/ws-noise-transport.js.map +0 -1
package/dist/src/utils/config.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { readFileSync, existsSync } from "node:fs";
|
|
2
|
-
import { join, dirname } from "node:path";
|
|
3
|
-
export function getAgentList(config) {
|
|
4
|
-
return config.agents?.list || [];
|
|
5
|
-
}
|
|
6
|
-
export function getDefaults(config) {
|
|
7
|
-
return config.agents?.defaults || {};
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Resolve an agent's workspace, falling back to agents.defaults.workspace.
|
|
11
|
-
*/
|
|
12
|
-
export function resolveWorkspace(agent, config) {
|
|
13
|
-
if (agent.workspace)
|
|
14
|
-
return agent.workspace;
|
|
15
|
-
const defaults = getDefaults(config);
|
|
16
|
-
return defaults.workspace;
|
|
17
|
-
}
|
|
18
|
-
export function findOpenClawConfig(startDir) {
|
|
19
|
-
let dir = startDir || process.cwd();
|
|
20
|
-
const home = process.env.HOME || "/";
|
|
21
|
-
while (true) {
|
|
22
|
-
const candidate = join(dir, "openclaw.json");
|
|
23
|
-
if (existsSync(candidate))
|
|
24
|
-
return candidate;
|
|
25
|
-
const dotCandidate = join(dir, ".openclaw", "openclaw.json");
|
|
26
|
-
if (existsSync(dotCandidate))
|
|
27
|
-
return dotCandidate;
|
|
28
|
-
const parent = dirname(dir);
|
|
29
|
-
if (parent === dir || dir === home)
|
|
30
|
-
break;
|
|
31
|
-
dir = parent;
|
|
32
|
-
}
|
|
33
|
-
// Last resort: ~/.openclaw/openclaw.json
|
|
34
|
-
const globalConfig = join(home, ".openclaw", "openclaw.json");
|
|
35
|
-
if (existsSync(globalConfig))
|
|
36
|
-
return globalConfig;
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
export function readOpenClawConfig(configPath) {
|
|
40
|
-
const raw = readFileSync(configPath, "utf-8");
|
|
41
|
-
return JSON.parse(raw);
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Resolve config path: use explicit path if given, otherwise auto-discover.
|
|
45
|
-
*/
|
|
46
|
-
export function resolveConfigPath(explicit) {
|
|
47
|
-
if (explicit) {
|
|
48
|
-
if (!existsSync(explicit)) {
|
|
49
|
-
throw new Error(`Config file not found: ${explicit}`);
|
|
50
|
-
}
|
|
51
|
-
return explicit;
|
|
52
|
-
}
|
|
53
|
-
return findOpenClawConfig();
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqB1C,MAAM,UAAU,YAAY,CAAC,MAAsB;IACjD,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAsB;IAChD,OAAO,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAoB,EAAE,MAAsB;IAC3E,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC,SAAS,CAAC;IAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC,SAA+B,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAiB;IAClD,IAAI,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;IAErC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAC7C,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QAC7D,IAAI,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,YAAY,CAAC;QAElD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM;QAC1C,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IAED,yCAAyC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IAC9D,IAAI,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,YAAY,CAAC;IAElD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IACjD,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,kBAAkB,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export interface HostConnectionState {
|
|
2
|
-
branch: string;
|
|
3
|
-
connectedAt: string;
|
|
4
|
-
lastHeartbeatSent: string;
|
|
5
|
-
lastHeartbeatAck: string | null;
|
|
6
|
-
reconnectCount: number;
|
|
7
|
-
bytesSent: number;
|
|
8
|
-
bytesReceived: number;
|
|
9
|
-
messagesSent: number;
|
|
10
|
-
messagesReceived: number;
|
|
11
|
-
pid: number;
|
|
12
|
-
}
|
|
13
|
-
export interface BranchConnectionState {
|
|
14
|
-
connectedAt: string;
|
|
15
|
-
lastSeen: string;
|
|
16
|
-
messagesReceived: number;
|
|
17
|
-
messagesPushed: number;
|
|
18
|
-
}
|
|
19
|
-
export declare function writeHostState(state: HostConnectionState): void;
|
|
20
|
-
export declare function readHostState(branch: string): HostConnectionState | null;
|
|
21
|
-
export declare function clearHostState(branch: string): void;
|
|
22
|
-
export declare function writeBranchState(state: BranchConnectionState): void;
|
|
23
|
-
export declare function readBranchState(): BranchConnectionState | null;
|
|
24
|
-
export declare function clearBranchState(): void;
|
|
25
|
-
export declare function listHostStates(): HostConnectionState[];
|
|
26
|
-
export declare function connectionAlive(branch: string): boolean | null;
|
|
27
|
-
//# sourceMappingURL=connection-state.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connection-state.d.ts","sourceRoot":"","sources":["../../../src/utils/connection-state.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAUD,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAG/D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAIxE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAGnE;AAED,wBAAgB,eAAe,IAAI,qBAAqB,GAAG,IAAI,CAI9D;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,cAAc,IAAI,mBAAmB,EAAE,CAStD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAS9D"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
const connectionsDir = () => join(process.env.HOME ?? homedir(), ".tps", "connections");
|
|
5
|
-
function hostStatePath(branch) {
|
|
6
|
-
return join(connectionsDir(), `${branch}.json`);
|
|
7
|
-
}
|
|
8
|
-
function branchStatePath() {
|
|
9
|
-
return join(connectionsDir(), "host.json");
|
|
10
|
-
}
|
|
11
|
-
export function writeHostState(state) {
|
|
12
|
-
mkdirSync(connectionsDir(), { recursive: true });
|
|
13
|
-
writeFileSync(hostStatePath(state.branch), JSON.stringify(state, null, 2), "utf-8");
|
|
14
|
-
}
|
|
15
|
-
export function readHostState(branch) {
|
|
16
|
-
const p = hostStatePath(branch);
|
|
17
|
-
if (!existsSync(p))
|
|
18
|
-
return null;
|
|
19
|
-
try {
|
|
20
|
-
return JSON.parse(readFileSync(p, "utf-8"));
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
export function clearHostState(branch) {
|
|
27
|
-
try {
|
|
28
|
-
rmSync(hostStatePath(branch), { force: true });
|
|
29
|
-
}
|
|
30
|
-
catch { }
|
|
31
|
-
}
|
|
32
|
-
export function writeBranchState(state) {
|
|
33
|
-
mkdirSync(connectionsDir(), { recursive: true });
|
|
34
|
-
writeFileSync(branchStatePath(), JSON.stringify(state, null, 2), "utf-8");
|
|
35
|
-
}
|
|
36
|
-
export function readBranchState() {
|
|
37
|
-
const p = branchStatePath();
|
|
38
|
-
if (!existsSync(p))
|
|
39
|
-
return null;
|
|
40
|
-
try {
|
|
41
|
-
return JSON.parse(readFileSync(p, "utf-8"));
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
export function clearBranchState() {
|
|
48
|
-
try {
|
|
49
|
-
rmSync(branchStatePath(), { force: true });
|
|
50
|
-
}
|
|
51
|
-
catch { }
|
|
52
|
-
}
|
|
53
|
-
export function listHostStates() {
|
|
54
|
-
const dir = connectionsDir();
|
|
55
|
-
if (!existsSync(dir))
|
|
56
|
-
return [];
|
|
57
|
-
return readdirSync(dir)
|
|
58
|
-
.filter((f) => f.endsWith(".json") && f !== "host.json")
|
|
59
|
-
.map((f) => {
|
|
60
|
-
try {
|
|
61
|
-
return JSON.parse(readFileSync(join(dir, f), "utf-8"));
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
})
|
|
67
|
-
.filter((x) => !!x);
|
|
68
|
-
}
|
|
69
|
-
export function connectionAlive(branch) {
|
|
70
|
-
const state = readHostState(branch);
|
|
71
|
-
if (!state)
|
|
72
|
-
return null;
|
|
73
|
-
try {
|
|
74
|
-
process.kill(state.pid, 0);
|
|
75
|
-
return true;
|
|
76
|
-
}
|
|
77
|
-
catch {
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=connection-state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connection-state.js","sourceRoot":"","sources":["../../../src/utils/connection-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface WorkstreamContext {
|
|
2
|
-
workstream: string;
|
|
3
|
-
summary: string;
|
|
4
|
-
createdAt: string;
|
|
5
|
-
updatedAt: string;
|
|
6
|
-
}
|
|
7
|
-
export declare function getContextDir(): string;
|
|
8
|
-
export declare function readContext(workstream: string): WorkstreamContext | null;
|
|
9
|
-
export declare function writeContext(workstream: string, data: Pick<WorkstreamContext, "summary"> & Partial<Pick<WorkstreamContext, "createdAt" | "updatedAt">>): WorkstreamContext;
|
|
10
|
-
export declare function listContexts(): Array<{
|
|
11
|
-
workstream: string;
|
|
12
|
-
updatedAt: string;
|
|
13
|
-
}>;
|
|
14
|
-
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/utils/context.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAaD,wBAAgB,aAAa,IAAI,MAAM,CAOtC;AAOD,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAKxE;AAED,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,GACrG,iBAAiB,CAoBnB;AAED,wBAAgB,YAAY,IAAI,KAAK,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB/E"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { mkdirSync, readFileSync, readdirSync, renameSync, statSync, writeFileSync, existsSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { homedir } from "node:os";
|
|
4
|
-
function assertValidWorkstream(workstream) {
|
|
5
|
-
if (workstream.length > 64) {
|
|
6
|
-
throw new Error("Invalid workstream: max length is 64 characters.");
|
|
7
|
-
}
|
|
8
|
-
if (!/^[a-zA-Z0-9_-]+$/.test(workstream)) {
|
|
9
|
-
throw new Error(`Invalid workstream "${workstream}". Use only letters, numbers, underscores, and hyphens.`);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export function getContextDir() {
|
|
13
|
-
// Per-workspace context (avoid polluting ~/.openclaw root config directory).
|
|
14
|
-
// Can be overridden explicitly for tests/tooling.
|
|
15
|
-
return (process.env.TPS_CONTEXT_DIR ||
|
|
16
|
-
join(process.env.HOME || homedir(), ".tps", "context"));
|
|
17
|
-
}
|
|
18
|
-
function contextPath(workstream) {
|
|
19
|
-
assertValidWorkstream(workstream);
|
|
20
|
-
return join(getContextDir(), `${workstream}.json`);
|
|
21
|
-
}
|
|
22
|
-
export function readContext(workstream) {
|
|
23
|
-
const file = contextPath(workstream);
|
|
24
|
-
if (!existsSync(file))
|
|
25
|
-
return null;
|
|
26
|
-
const raw = readFileSync(file, "utf-8");
|
|
27
|
-
return JSON.parse(raw);
|
|
28
|
-
}
|
|
29
|
-
export function writeContext(workstream, data) {
|
|
30
|
-
const dir = getContextDir();
|
|
31
|
-
mkdirSync(dir, { recursive: true });
|
|
32
|
-
const now = new Date().toISOString();
|
|
33
|
-
const existing = readContext(workstream);
|
|
34
|
-
const record = {
|
|
35
|
-
workstream,
|
|
36
|
-
summary: data.summary,
|
|
37
|
-
createdAt: existing?.createdAt || data.createdAt || now,
|
|
38
|
-
updatedAt: data.updatedAt || now,
|
|
39
|
-
};
|
|
40
|
-
const file = contextPath(workstream);
|
|
41
|
-
const tmp = `${file}.tmp-${process.pid}-${Date.now()}`;
|
|
42
|
-
writeFileSync(tmp, JSON.stringify(record, null, 2), "utf-8");
|
|
43
|
-
renameSync(tmp, file);
|
|
44
|
-
return record;
|
|
45
|
-
}
|
|
46
|
-
export function listContexts() {
|
|
47
|
-
const dir = getContextDir();
|
|
48
|
-
if (!existsSync(dir))
|
|
49
|
-
return [];
|
|
50
|
-
const rows = readdirSync(dir)
|
|
51
|
-
.filter((f) => f.endsWith(".json"))
|
|
52
|
-
.map((f) => {
|
|
53
|
-
const workstream = f.replace(/\.json$/, "");
|
|
54
|
-
const file = join(dir, f);
|
|
55
|
-
let updatedAt;
|
|
56
|
-
try {
|
|
57
|
-
const parsed = JSON.parse(readFileSync(file, "utf-8"));
|
|
58
|
-
updatedAt = parsed.updatedAt || statSync(file).mtime.toISOString();
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
updatedAt = statSync(file).mtime.toISOString();
|
|
62
|
-
}
|
|
63
|
-
return { workstream, updatedAt };
|
|
64
|
-
})
|
|
65
|
-
.sort((a, b) => (a.updatedAt < b.updatedAt ? 1 : -1));
|
|
66
|
-
return rows;
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/utils/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"github-webhook.d.ts","sourceRoot":"","sources":["../../../src/utils/github-webhook.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AA2EjE,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmClG"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
2
|
-
import { queueOutboxMessage } from "./outbox.js";
|
|
3
|
-
function webhookSecret() {
|
|
4
|
-
return process.env.GITHUB_WEBHOOK_SECRET ?? "";
|
|
5
|
-
}
|
|
6
|
-
function webhookTarget() {
|
|
7
|
-
return process.env.GITHUB_WEBHOOK_TARGET ?? "rockit";
|
|
8
|
-
}
|
|
9
|
-
function validateSignature(body, sigHeader) {
|
|
10
|
-
const secret = webhookSecret();
|
|
11
|
-
if (!secret)
|
|
12
|
-
return false;
|
|
13
|
-
if (!sigHeader?.startsWith("sha256="))
|
|
14
|
-
return false;
|
|
15
|
-
const expected = createHmac("sha256", secret).update(body).digest("hex");
|
|
16
|
-
const expectedBuf = Buffer.from(`sha256=${expected}`, "utf-8");
|
|
17
|
-
const actualBuf = Buffer.from(sigHeader, "utf-8");
|
|
18
|
-
if (expectedBuf.length !== actualBuf.length)
|
|
19
|
-
return false;
|
|
20
|
-
return timingSafeEqual(expectedBuf, actualBuf);
|
|
21
|
-
}
|
|
22
|
-
function readBody(req) {
|
|
23
|
-
return new Promise((resolve, reject) => {
|
|
24
|
-
const chunks = [];
|
|
25
|
-
req.on("data", (chunk) => chunks.push(chunk));
|
|
26
|
-
req.on("end", () => resolve(Buffer.concat(chunks)));
|
|
27
|
-
req.on("error", reject);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
function formatEvent(event, payload) {
|
|
31
|
-
const repo = payload.repository?.full_name ?? "unknown/repo";
|
|
32
|
-
switch (event) {
|
|
33
|
-
case "push": {
|
|
34
|
-
const ref = payload.ref ?? "unknown";
|
|
35
|
-
const branch = ref.replace("refs/heads/", "");
|
|
36
|
-
const commits = payload.commits?.length ?? 0;
|
|
37
|
-
const pusher = payload.pusher?.name ?? "unknown";
|
|
38
|
-
const after = payload.after?.slice(0, 7) ?? "unknown";
|
|
39
|
-
return `📦 push to ${repo}/${branch} by ${pusher} — ${commits} commit(s), HEAD ${after}`;
|
|
40
|
-
}
|
|
41
|
-
case "pull_request": {
|
|
42
|
-
const action = payload.action;
|
|
43
|
-
const pr = payload.pull_request;
|
|
44
|
-
const num = pr?.number ?? "?";
|
|
45
|
-
const title = pr?.title ?? "(no title)";
|
|
46
|
-
const user = pr?.user?.login ?? "unknown";
|
|
47
|
-
const url = pr?.html_url ?? "";
|
|
48
|
-
return `🔀 PR #${num} ${action} by ${user} — ${title}\n${url}`;
|
|
49
|
-
}
|
|
50
|
-
case "workflow_run": {
|
|
51
|
-
const wf = payload.workflow_run;
|
|
52
|
-
const name = wf?.name ?? "workflow";
|
|
53
|
-
const conclusion = wf?.conclusion ?? "in_progress";
|
|
54
|
-
const branch = wf?.head_branch ?? "?";
|
|
55
|
-
const sha = wf?.head_sha?.slice(0, 7) ?? "?";
|
|
56
|
-
const icon = conclusion === "success" ? "✅" : conclusion === "failure" ? "❌" : "⏳";
|
|
57
|
-
return `${icon} ${repo} — ${name} ${conclusion} on ${branch} @ ${sha}`;
|
|
58
|
-
}
|
|
59
|
-
case "issues": {
|
|
60
|
-
const action = payload.action;
|
|
61
|
-
const issue = payload.issue;
|
|
62
|
-
const num = issue?.number ?? "?";
|
|
63
|
-
const title = issue?.title ?? "(no title)";
|
|
64
|
-
const user = issue?.user?.login ?? "unknown";
|
|
65
|
-
const url = issue?.html_url ?? "";
|
|
66
|
-
return `🐛 Issue #${num} ${action} by ${user} — ${title}\n${url}`;
|
|
67
|
-
}
|
|
68
|
-
default:
|
|
69
|
-
return `📬 GitHub ${event} on ${repo}`;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
export async function handleGithubWebhook(req, res) {
|
|
73
|
-
if (!webhookSecret()) {
|
|
74
|
-
console.warn("[webhook] GITHUB_WEBHOOK_SECRET not set — all webhook requests will be rejected");
|
|
75
|
-
res.statusCode = 503;
|
|
76
|
-
res.end("Webhook not configured");
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
const event = req.headers["x-github-event"];
|
|
80
|
-
const sig = req.headers["x-hub-signature-256"];
|
|
81
|
-
if (!event) {
|
|
82
|
-
res.statusCode = 400;
|
|
83
|
-
res.end("Missing X-GitHub-Event header");
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
const body = await readBody(req);
|
|
87
|
-
if (!validateSignature(body, sig)) {
|
|
88
|
-
res.statusCode = 401;
|
|
89
|
-
res.end("Invalid signature");
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
let payload;
|
|
93
|
-
try {
|
|
94
|
-
payload = JSON.parse(body.toString("utf-8"));
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
res.statusCode = 400;
|
|
98
|
-
res.end("Invalid JSON");
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
queueOutboxMessage(webhookTarget(), formatEvent(event, payload), "github-webhook");
|
|
102
|
-
res.statusCode = 200;
|
|
103
|
-
res.end("ok");
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=github-webhook.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"github-webhook.js","sourceRoot":"","sources":["../../../src/utils/github-webhook.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
export interface TpsVault {
|
|
2
|
-
identity: {
|
|
3
|
-
seed: string;
|
|
4
|
-
createdAt: string;
|
|
5
|
-
expiresAt?: string;
|
|
6
|
-
};
|
|
7
|
-
secrets: Record<string, string>;
|
|
8
|
-
}
|
|
9
|
-
export declare function saveToVault(data: TpsVault): Promise<void>;
|
|
10
|
-
export declare function loadFromVault(): Promise<TpsVault | null>;
|
|
11
|
-
export interface TpsSigningKeyPair {
|
|
12
|
-
publicKey: Uint8Array;
|
|
13
|
-
privateKey: Uint8Array;
|
|
14
|
-
}
|
|
15
|
-
export interface TpsEncryptionKeyPair {
|
|
16
|
-
publicKey: Uint8Array;
|
|
17
|
-
privateKey: Uint8Array;
|
|
18
|
-
}
|
|
19
|
-
export interface TpsKeyPair {
|
|
20
|
-
signing: TpsSigningKeyPair;
|
|
21
|
-
encryption: TpsEncryptionKeyPair;
|
|
22
|
-
seed: Uint8Array;
|
|
23
|
-
fingerprint: string;
|
|
24
|
-
createdAt: string;
|
|
25
|
-
expiresAt?: string;
|
|
26
|
-
publicKey: Uint8Array;
|
|
27
|
-
privateKey: Uint8Array;
|
|
28
|
-
}
|
|
29
|
-
export interface KeyMeta {
|
|
30
|
-
fingerprint: string;
|
|
31
|
-
createdAt: string;
|
|
32
|
-
expiresAt?: string;
|
|
33
|
-
trust?: "high" | "standard" | "low";
|
|
34
|
-
revokedAt?: string;
|
|
35
|
-
revokeReason?: string;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Compute the fingerprint (SHA-256 hex) of a public key.
|
|
39
|
-
*/
|
|
40
|
-
export declare function fingerprint(publicKey: Uint8Array): string;
|
|
41
|
-
/**
|
|
42
|
-
* Derive X25519 private key from Ed25519 seed.
|
|
43
|
-
* Uses SHA-512 of the seed (same as Ed25519 key expansion) and clamps
|
|
44
|
-
* the first 32 bytes for Curve25519 scalar multiplication.
|
|
45
|
-
* This is the same approach as libsodium's crypto_sign_ed25519_sk_to_curve25519.
|
|
46
|
-
*/
|
|
47
|
-
export declare function edSeedToX25519Private(seed: Uint8Array): Uint8Array;
|
|
48
|
-
/**
|
|
49
|
-
* Generate a new identity keypair (Ed25519 signing + X25519 encryption).
|
|
50
|
-
* Both are derived from a single 32-byte seed.
|
|
51
|
-
*/
|
|
52
|
-
export declare function generateKeyPair(options?: {
|
|
53
|
-
expiresIn?: number;
|
|
54
|
-
}): TpsKeyPair;
|
|
55
|
-
/**
|
|
56
|
-
* Sign a message with a private key.
|
|
57
|
-
* Returns the 64-byte Ed25519 signature.
|
|
58
|
-
*/
|
|
59
|
-
export declare function sign(message: Uint8Array, privateKey: Uint8Array): Uint8Array;
|
|
60
|
-
/**
|
|
61
|
-
* Verify a signature against a message and public key.
|
|
62
|
-
*/
|
|
63
|
-
export declare function verify(message: Uint8Array, signature: Uint8Array, publicKey: Uint8Array): boolean;
|
|
64
|
-
/**
|
|
65
|
-
* Save a keypair to a directory.
|
|
66
|
-
* Private keys get 0600 permissions. Both Ed25519 and X25519 keys stored.
|
|
67
|
-
*/
|
|
68
|
-
export declare function saveKeyPair(keyPair: TpsKeyPair, dir: string, prefix?: string): void;
|
|
69
|
-
/**
|
|
70
|
-
* Load a keypair from a directory.
|
|
71
|
-
* Supports both new format (with seed + x25519) and legacy (ed25519 only).
|
|
72
|
-
*/
|
|
73
|
-
export declare function loadKeyPair(dir: string, prefix?: string): TpsKeyPair;
|
|
74
|
-
/**
|
|
75
|
-
* Check if a private key file has safe permissions (0600).
|
|
76
|
-
* Returns true if permissions are restrictive enough.
|
|
77
|
-
*/
|
|
78
|
-
export declare function checkKeyPermissions(keyPath: string): boolean;
|
|
79
|
-
/**
|
|
80
|
-
* Initialize host identity (generate keypair if not exists).
|
|
81
|
-
* Returns the keypair (existing or newly generated).
|
|
82
|
-
*/
|
|
83
|
-
export declare function initHostIdentity(options?: {
|
|
84
|
-
expiresIn?: number;
|
|
85
|
-
force?: boolean;
|
|
86
|
-
}): Promise<TpsKeyPair>;
|
|
87
|
-
/**
|
|
88
|
-
* Load the host identity. Throws if not initialized.
|
|
89
|
-
*/
|
|
90
|
-
export declare function loadHostIdentity(): Promise<TpsKeyPair>;
|
|
91
|
-
export declare function loadHostIdentityId(): Promise<string>;
|
|
92
|
-
export interface RegisteredKey {
|
|
93
|
-
branchId: string;
|
|
94
|
-
publicKey: Uint8Array;
|
|
95
|
-
encryptionKey?: Uint8Array;
|
|
96
|
-
meta: KeyMeta;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Register a branch's public keys in the host registry.
|
|
100
|
-
* Branch generates its own keys — only PUBLIC keys are registered here.
|
|
101
|
-
* The host NEVER sees a branch's private key.
|
|
102
|
-
*/
|
|
103
|
-
export declare function registerBranch(branchId: string, publicKey: Uint8Array, meta?: Partial<KeyMeta>, encryptionKey?: Uint8Array): RegisteredKey;
|
|
104
|
-
/**
|
|
105
|
-
* Look up a branch's registered key.
|
|
106
|
-
*/
|
|
107
|
-
export declare function lookupBranch(branchId: string): RegisteredKey | null;
|
|
108
|
-
/**
|
|
109
|
-
* Revoke a branch's key. Moves metadata to revoked/ directory.
|
|
110
|
-
*/
|
|
111
|
-
export declare function revokeBranch(branchId: string, reason: string): void;
|
|
112
|
-
/**
|
|
113
|
-
* Check if a branch key is revoked.
|
|
114
|
-
*/
|
|
115
|
-
export declare function isRevoked(branchId: string): boolean;
|
|
116
|
-
/**
|
|
117
|
-
* Check if a branch key is expired.
|
|
118
|
-
*/
|
|
119
|
-
export declare function isExpired(meta: KeyMeta): boolean;
|
|
120
|
-
/**
|
|
121
|
-
* List all registered (non-revoked) branches.
|
|
122
|
-
*/
|
|
123
|
-
export declare function listBranches(): RegisteredKey[];
|
|
124
|
-
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/utils/identity.ts"],"names":[],"mappings":"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"}
|