@mootup/moot-cli 0.1.0-rc.0 → 0.2.1
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 +37 -30
- package/dist/auth/archetypes.d.ts +10 -0
- package/dist/auth/archetypes.d.ts.map +1 -0
- package/dist/auth/archetypes.js +39 -0
- package/dist/auth/archetypes.js.map +1 -0
- package/dist/auth/credentials.d.ts +21 -0
- package/dist/auth/credentials.d.ts.map +1 -0
- package/dist/auth/credentials.js +97 -0
- package/dist/auth/credentials.js.map +1 -0
- package/dist/auth/oauth.d.ts +42 -0
- package/dist/auth/oauth.d.ts.map +1 -0
- package/dist/auth/oauth.js +200 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/auth/profile.d.ts +3 -0
- package/dist/auth/profile.d.ts.map +1 -0
- package/dist/auth/profile.js +7 -0
- package/dist/auth/profile.js.map +1 -0
- package/dist/bin.js +27 -3
- package/dist/bin.js.map +1 -1
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +261 -69
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +5 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +7 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +42 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/refresh.d.ts +6 -0
- package/dist/commands/refresh.d.ts.map +1 -0
- package/dist/commands/refresh.js +53 -0
- package/dist/commands/refresh.js.map +1 -0
- package/dist/credential.d.ts +6 -0
- package/dist/credential.d.ts.map +1 -1
- package/dist/credential.js +30 -1
- package/dist/credential.js.map +1 -1
- package/dist/docker.js +1 -1
- package/dist/docker.js.map +1 -1
- package/dist/harness/claude-code.d.ts +37 -0
- package/dist/harness/claude-code.d.ts.map +1 -0
- package/dist/harness/claude-code.js +66 -0
- package/dist/harness/claude-code.js.map +1 -0
- package/dist/harness/cursor-agent.d.ts +3 -0
- package/dist/harness/cursor-agent.d.ts.map +1 -0
- package/dist/harness/cursor-agent.js +17 -0
- package/dist/harness/cursor-agent.js.map +1 -0
- package/dist/harness/cursor-ide.d.ts +10 -0
- package/dist/harness/cursor-ide.d.ts.map +1 -0
- package/dist/harness/cursor-ide.js +65 -0
- package/dist/harness/cursor-ide.js.map +1 -0
- package/dist/harness/index.d.ts +16 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +65 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/harness/sdk.d.ts +7 -0
- package/dist/harness/sdk.d.ts.map +1 -0
- package/dist/harness/sdk.js +18 -0
- package/dist/harness/sdk.js.map +1 -0
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/package.json +11 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/commands/refresh.ts"],"names":[],"mappings":"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"}
|
package/dist/credential.d.ts
CHANGED
|
@@ -2,12 +2,18 @@ export declare const CRED_DIR: string;
|
|
|
2
2
|
export declare const CRED_FILE: string;
|
|
3
3
|
export declare const PAT_PREFIX = "mootup_pat_";
|
|
4
4
|
export declare const DEFAULT_API_URL = "https://mootup.io";
|
|
5
|
+
export type CredentialType = 'static_token' | 'oauth';
|
|
5
6
|
export interface Credential {
|
|
6
7
|
api_url: string;
|
|
7
8
|
token: string;
|
|
8
9
|
user_id: string;
|
|
10
|
+
credential_type?: CredentialType;
|
|
11
|
+
refresh_token_ref?: string;
|
|
12
|
+
access_token_expires_at?: number;
|
|
13
|
+
installation_id?: string;
|
|
9
14
|
}
|
|
10
15
|
export type CredentialsFile = Record<string, Credential>;
|
|
11
16
|
export declare function loadCredential(profile?: string): Credential | null;
|
|
12
17
|
export declare function storeCredential(cred: Credential, profile?: string): void;
|
|
18
|
+
export declare function deleteCredential(profile?: string): void;
|
|
13
19
|
//# sourceMappingURL=credential.d.ts.map
|
package/dist/credential.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../src/credential.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,QAA6B,CAAC;AACnD,eAAO,MAAM,SAAS,QAAqC,CAAC;AAC5D,eAAO,MAAM,UAAU,gBAAgB,CAAC;AACxC,eAAO,MAAM,eAAe,sBAAsB,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../src/credential.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,QAA6B,CAAC;AACnD,eAAO,MAAM,SAAS,QAAqC,CAAC;AAC5D,eAAO,MAAM,UAAU,gBAAgB,CAAC;AACxC,eAAO,MAAM,eAAe,sBAAsB,CAAC;AAEnD,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,OAAO,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEzD,wBAAgB,cAAc,CAAC,OAAO,SAAY,GAAG,UAAU,GAAG,IAAI,CA8BrE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,EAChB,OAAO,SAAY,GAClB,IAAI,CAqBN;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAY,GAAG,IAAI,CAe1D"}
|
package/dist/credential.js
CHANGED
|
@@ -27,7 +27,18 @@ export function loadCredential(profile = 'default') {
|
|
|
27
27
|
typeof c.user_id !== 'string') {
|
|
28
28
|
return null;
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
const out = { api_url: c.api_url, token: c.token, user_id: c.user_id };
|
|
31
|
+
if (c.credential_type === 'oauth' || c.credential_type === 'static_token') {
|
|
32
|
+
out.credential_type = c.credential_type;
|
|
33
|
+
}
|
|
34
|
+
if (typeof c.refresh_token_ref === 'string')
|
|
35
|
+
out.refresh_token_ref = c.refresh_token_ref;
|
|
36
|
+
if (typeof c.access_token_expires_at === 'number') {
|
|
37
|
+
out.access_token_expires_at = c.access_token_expires_at;
|
|
38
|
+
}
|
|
39
|
+
if (typeof c.installation_id === 'string')
|
|
40
|
+
out.installation_id = c.installation_id;
|
|
41
|
+
return out;
|
|
31
42
|
}
|
|
32
43
|
export function storeCredential(cred, profile = 'default') {
|
|
33
44
|
if (!existsSync(CRED_DIR)) {
|
|
@@ -53,4 +64,22 @@ export function storeCredential(cred, profile = 'default') {
|
|
|
53
64
|
writeFileSync(CRED_FILE, JSON.stringify(existing, null, 2) + '\n');
|
|
54
65
|
chmodSync(CRED_FILE, 0o600);
|
|
55
66
|
}
|
|
67
|
+
export function deleteCredential(profile = 'default') {
|
|
68
|
+
if (!existsSync(CRED_FILE))
|
|
69
|
+
return;
|
|
70
|
+
let existing = {};
|
|
71
|
+
try {
|
|
72
|
+
const raw = readFileSync(CRED_FILE, 'utf8');
|
|
73
|
+
const parsed = JSON.parse(raw);
|
|
74
|
+
if (parsed && typeof parsed === 'object') {
|
|
75
|
+
existing = parsed;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
delete existing[profile];
|
|
82
|
+
writeFileSync(CRED_FILE, JSON.stringify(existing, null, 2) + '\n');
|
|
83
|
+
chmodSync(CRED_FILE, 0o600);
|
|
84
|
+
}
|
|
56
85
|
//# sourceMappingURL=credential.js.map
|
package/dist/credential.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential.js","sourceRoot":"","sources":["../src/credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"credential.js","sourceRoot":"","sources":["../src/credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAgBnD,MAAM,UAAU,cAAc,CAAC,OAAO,GAAG,SAAS;IAChD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,IAAI,GAAI,MAAkC,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,CAAC,GAAG,IAA+B,CAAC;IAC1C,IACE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAC7B,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAC3B,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAe,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACnF,IAAI,CAAC,CAAC,eAAe,KAAK,OAAO,IAAI,CAAC,CAAC,eAAe,KAAK,cAAc,EAAE,CAAC;QAC1E,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC;IAC1C,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,iBAAiB,KAAK,QAAQ;QAAE,GAAG,CAAC,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;IACzF,IAAI,OAAO,CAAC,CAAC,uBAAuB,KAAK,QAAQ,EAAE,CAAC;QAClD,GAAG,CAAC,uBAAuB,GAAG,CAAC,CAAC,uBAAuB,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ;QAAE,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC;IACnF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAgB,EAChB,OAAO,GAAG,SAAS;IAEnB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,QAAQ,GAAoB,EAAE,CAAC;IACnC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;YAC1C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,QAAQ,GAAG,MAAyB,CAAC;YACvC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACnE,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAO,GAAG,SAAS;IAClD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO;IACnC,IAAI,QAAQ,GAAoB,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,QAAQ,GAAG,MAAyB,CAAC;QACvC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzB,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACnE,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/docker.js
CHANGED
|
@@ -92,7 +92,7 @@ export function requireContainerId(workspace, deps = {}) {
|
|
|
92
92
|
const cid = containerIdOrNone(workspace, deps);
|
|
93
93
|
if (!cid) {
|
|
94
94
|
throw new Error(`No running devcontainer found for ${resolve(workspace)}.\n` +
|
|
95
|
-
`Run '
|
|
95
|
+
`Run 'moot up' first.`);
|
|
96
96
|
}
|
|
97
97
|
return cid;
|
|
98
98
|
}
|
package/dist/docker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface InstallResponse {
|
|
2
|
+
installation_id: string;
|
|
3
|
+
team_id: string;
|
|
4
|
+
space_id: string;
|
|
5
|
+
space_name?: string;
|
|
6
|
+
actors: Record<string, {
|
|
7
|
+
actor_id: string;
|
|
8
|
+
api_key: string;
|
|
9
|
+
display_name: string;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
export interface GenerateArgs {
|
|
13
|
+
installResp: InstallResponse;
|
|
14
|
+
cwd: string;
|
|
15
|
+
force?: boolean;
|
|
16
|
+
yes?: boolean;
|
|
17
|
+
confirm?: (prompt: string) => Promise<boolean>;
|
|
18
|
+
apiUrl: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function generateClaudeCode(args: GenerateArgs): Promise<void>;
|
|
21
|
+
export declare function writeActorsJson(args: {
|
|
22
|
+
cwd: string;
|
|
23
|
+
spaceId: string;
|
|
24
|
+
spaceName: string;
|
|
25
|
+
apiUrl: string;
|
|
26
|
+
adopted: Record<string, {
|
|
27
|
+
actor_id: string;
|
|
28
|
+
api_key: string;
|
|
29
|
+
display_name: string;
|
|
30
|
+
}>;
|
|
31
|
+
}): void;
|
|
32
|
+
export declare function installDevcontainer(args: {
|
|
33
|
+
cwd: string;
|
|
34
|
+
templateName: string;
|
|
35
|
+
overwrite: boolean;
|
|
36
|
+
}): void;
|
|
37
|
+
//# sourceMappingURL=claude-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/harness/claude-code.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,eAAe,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAY1E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtF,GAAG,IAAI,CAgBP;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,IAAI,CAgBP"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { mkdirSync, existsSync, writeFileSync, chmodSync, copyFileSync, readdirSync, statSync, } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { getTemplatesDir } from '@mootup/moot-templates';
|
|
4
|
+
export async function generateClaudeCode(args) {
|
|
5
|
+
writeActorsJson({
|
|
6
|
+
cwd: args.cwd,
|
|
7
|
+
spaceId: args.installResp.space_id,
|
|
8
|
+
spaceName: args.installResp.space_name ?? args.installResp.space_id,
|
|
9
|
+
apiUrl: args.apiUrl,
|
|
10
|
+
adopted: args.installResp.actors,
|
|
11
|
+
});
|
|
12
|
+
console.log(`Wrote .moot/actors.json (${Object.keys(args.installResp.actors).length} agents, chmod 600)`);
|
|
13
|
+
installDevcontainer({ cwd: args.cwd, templateName: 'devcontainer', overwrite: false });
|
|
14
|
+
}
|
|
15
|
+
export function writeActorsJson(args) {
|
|
16
|
+
const mootDir = join(args.cwd, '.moot');
|
|
17
|
+
if (!existsSync(mootDir)) {
|
|
18
|
+
mkdirSync(mootDir, { recursive: true, mode: 0o700 });
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
chmodSync(mootDir, 0o700);
|
|
22
|
+
}
|
|
23
|
+
const content = {
|
|
24
|
+
space_id: args.spaceId,
|
|
25
|
+
space_name: args.spaceName,
|
|
26
|
+
api_url: args.apiUrl,
|
|
27
|
+
actors: args.adopted,
|
|
28
|
+
};
|
|
29
|
+
const actorsPath = join(mootDir, 'actors.json');
|
|
30
|
+
writeFileSync(actorsPath, JSON.stringify(content, null, 2) + '\n');
|
|
31
|
+
chmodSync(actorsPath, 0o600);
|
|
32
|
+
}
|
|
33
|
+
export function installDevcontainer(args) {
|
|
34
|
+
const src = join(getTemplatesDir(), args.templateName);
|
|
35
|
+
const target = join(args.cwd, '.devcontainer');
|
|
36
|
+
const staged = join(args.cwd, '.moot', 'suggested-devcontainer');
|
|
37
|
+
const targetExists = existsSync(target);
|
|
38
|
+
if (targetExists && !args.overwrite) {
|
|
39
|
+
copyDirRecursive(src, staged);
|
|
40
|
+
console.log(`.devcontainer/ already exists — staged at .moot/suggested-devcontainer/`);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
copyDirRecursive(src, target);
|
|
44
|
+
const fileCount = readdirSync(target).length;
|
|
45
|
+
console.log(`Installed .devcontainer/ (${fileCount} files)`);
|
|
46
|
+
}
|
|
47
|
+
function copyDirRecursive(src, dest) {
|
|
48
|
+
if (!existsSync(dest)) {
|
|
49
|
+
mkdirSync(dest, { recursive: true });
|
|
50
|
+
}
|
|
51
|
+
for (const entry of readdirSync(src)) {
|
|
52
|
+
const s = join(src, entry);
|
|
53
|
+
const d = join(dest, entry);
|
|
54
|
+
const stats = statSync(s);
|
|
55
|
+
if (stats.isDirectory()) {
|
|
56
|
+
copyDirRecursive(s, d);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
copyFileSync(s, d);
|
|
60
|
+
if (entry.endsWith('.sh')) {
|
|
61
|
+
chmodSync(d, 0o755);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=claude-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/harness/claude-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-agent.d.ts","sourceRoot":"","sources":["../../src/harness/cursor-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE3F,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB3E"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { writeActorsJson, installDevcontainer } from './claude-code.js';
|
|
2
|
+
export async function generateCursorAgent(args) {
|
|
3
|
+
writeActorsJson({
|
|
4
|
+
cwd: args.cwd,
|
|
5
|
+
spaceId: args.installResp.space_id,
|
|
6
|
+
spaceName: args.installResp.space_name ?? args.installResp.space_id,
|
|
7
|
+
apiUrl: args.apiUrl,
|
|
8
|
+
adopted: args.installResp.actors,
|
|
9
|
+
});
|
|
10
|
+
console.log(`Wrote .moot/actors.json (${Object.keys(args.installResp.actors).length} agents, chmod 600)`);
|
|
11
|
+
installDevcontainer({
|
|
12
|
+
cwd: args.cwd,
|
|
13
|
+
templateName: 'cursor-agent-devcontainer',
|
|
14
|
+
overwrite: false,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=cursor-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-agent.js","sourceRoot":"","sources":["../../src/harness/cursor-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAqB,MAAM,kBAAkB,CAAC;AAE3F,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAkB;IAC1D,eAAe,CAAC;QACd,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ;QAClC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ;QACnE,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;KACjC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CACT,mCAAmC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,qBAAqB,CACpG,CAAC;IACF,mBAAmB,CAAC;QAClB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,YAAY,EAAE,2BAA2B;QACzC,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface GenerateCursorIdeArgs {
|
|
2
|
+
token: string;
|
|
3
|
+
apiUrl: string;
|
|
4
|
+
cwd: string;
|
|
5
|
+
force?: boolean;
|
|
6
|
+
yes?: boolean;
|
|
7
|
+
confirm?: (prompt: string) => Promise<boolean>;
|
|
8
|
+
}
|
|
9
|
+
export declare function generateCursorIde(args: GenerateCursorIdeArgs): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=cursor-ide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-ide.d.ts","sourceRoot":"","sources":["../../src/harness/cursor-ide.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAChD;AAID,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ClF"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { mkdirSync, existsSync, writeFileSync, readFileSync, chmodSync, } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
const GITIGNORE_ENTRY = '.cursor/mcp.json';
|
|
4
|
+
export async function generateCursorIde(args) {
|
|
5
|
+
const cursorDir = join(args.cwd, '.cursor');
|
|
6
|
+
const mcpPath = join(cursorDir, 'mcp.json');
|
|
7
|
+
const force = args.force ?? false;
|
|
8
|
+
const yes = args.yes ?? false;
|
|
9
|
+
const confirm = args.confirm ?? defaultConfirm;
|
|
10
|
+
if (existsSync(mcpPath) && !force) {
|
|
11
|
+
const existing = readFileSync(mcpPath, 'utf8');
|
|
12
|
+
console.log(`.cursor/mcp.json already exists:\n${existing}`);
|
|
13
|
+
if (!yes) {
|
|
14
|
+
const ok = await confirm(`Overwrite .cursor/mcp.json with new PAT-backed config? [y/N] `);
|
|
15
|
+
if (!ok) {
|
|
16
|
+
console.log('Aborted.');
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (!existsSync(cursorDir)) {
|
|
22
|
+
mkdirSync(cursorDir, { recursive: true, mode: 0o700 });
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
chmodSync(cursorDir, 0o700);
|
|
26
|
+
}
|
|
27
|
+
const content = {
|
|
28
|
+
mcpServers: {
|
|
29
|
+
convo: {
|
|
30
|
+
url: `${args.apiUrl}/mcp`,
|
|
31
|
+
headers: {
|
|
32
|
+
Authorization: `Bearer ${args.token}`,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
writeFileSync(mcpPath, JSON.stringify(content, null, 2) + '\n');
|
|
38
|
+
chmodSync(mcpPath, 0o600);
|
|
39
|
+
console.log(`Wrote .cursor/mcp.json (chmod 600)`);
|
|
40
|
+
appendGitignoreEntry(args.cwd);
|
|
41
|
+
}
|
|
42
|
+
function appendGitignoreEntry(cwd) {
|
|
43
|
+
const gitignorePath = join(cwd, '.gitignore');
|
|
44
|
+
if (existsSync(gitignorePath)) {
|
|
45
|
+
const existing = readFileSync(gitignorePath, 'utf8');
|
|
46
|
+
if (existing.includes(GITIGNORE_ENTRY)) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const sep = existing.endsWith('\n') ? '' : '\n';
|
|
50
|
+
writeFileSync(gitignorePath, `${existing}${sep}${GITIGNORE_ENTRY}\n`);
|
|
51
|
+
console.log(`Appended '${GITIGNORE_ENTRY}' to .gitignore`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
writeFileSync(gitignorePath, `${GITIGNORE_ENTRY}\n`);
|
|
55
|
+
console.log(`Created .gitignore with '${GITIGNORE_ENTRY}' entry`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async function defaultConfirm(prompt) {
|
|
59
|
+
const { createInterface } = await import('node:readline/promises');
|
|
60
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
61
|
+
const answer = (await rl.question(prompt)).trim().toLowerCase();
|
|
62
|
+
rl.close();
|
|
63
|
+
return answer === 'y' || answer === 'yes';
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=cursor-ide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-ide.js","sourceRoot":"","sources":["../../src/harness/cursor-ide.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACZ,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAWjC,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAA2B;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC;IAE/C,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,+DAA+D,CAChE,CAAC;YACF,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,OAAO,GAAG;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM;gBACzB,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;iBACtC;aACF;SACF;KACF,CAAC;IACF,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAChE,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAE1D,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,aAAa,CACX,aAAa,EACb,GAAG,QAAQ,GAAG,GAAG,GAAG,eAAe,IAAI,CACxC,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,aAAa,eAAe,iBAAiB,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,aAAa,EAAE,GAAG,eAAe,IAAI,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,4BAA4B,eAAe,SAAS,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAc;IAC1C,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACnE,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChE,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,KAAK,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type HarnessName = 'claude-code' | 'cursor-agent' | 'cursor-ide' | 'sdk';
|
|
2
|
+
export type HarnessTopology = 'devcontainer-team' | 'host-side-solo';
|
|
3
|
+
export interface HarnessEntry {
|
|
4
|
+
name: HarnessName;
|
|
5
|
+
topology: HarnessTopology;
|
|
6
|
+
description: string;
|
|
7
|
+
paths_written: readonly string[];
|
|
8
|
+
}
|
|
9
|
+
export declare const HARNESS_REGISTRY: Readonly<Record<HarnessName, HarnessEntry>>;
|
|
10
|
+
export declare const DEFAULT_HARNESS: HarnessName;
|
|
11
|
+
export declare const RESERVED_BARE_NAMES: readonly string[];
|
|
12
|
+
export declare function classifyHarness(name: string): HarnessEntry;
|
|
13
|
+
export declare function validateFlagMatrix(harness: HarnessEntry, opts: {
|
|
14
|
+
archetype?: string;
|
|
15
|
+
}): void;
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,cAAc,GAAG,YAAY,GAAG,KAAK,CAAC;AAChF,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAErE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CA2C/D,CAAC;AAEX,eAAO,MAAM,eAAe,EAAE,WAA2B,CAAC;AAC1D,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAe,CAAC;AAEjE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAa1D;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,IAAI,CAON"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export const HARNESS_REGISTRY = {
|
|
2
|
+
'claude-code': {
|
|
3
|
+
name: 'claude-code',
|
|
4
|
+
topology: 'devcontainer-team',
|
|
5
|
+
description: 'Claude Code agents in devcontainer (default)',
|
|
6
|
+
paths_written: [
|
|
7
|
+
'.devcontainer/devcontainer.json',
|
|
8
|
+
'.moot/actors.json',
|
|
9
|
+
'.env.product',
|
|
10
|
+
'.env.leader',
|
|
11
|
+
'.env.spec',
|
|
12
|
+
'.env.implementation',
|
|
13
|
+
'.env.qa',
|
|
14
|
+
'.env.librarian',
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
'cursor-agent': {
|
|
18
|
+
name: 'cursor-agent',
|
|
19
|
+
topology: 'devcontainer-team',
|
|
20
|
+
description: 'Cursor Agent agents in devcontainer (Cursor-specific tweaks)',
|
|
21
|
+
paths_written: [
|
|
22
|
+
'.devcontainer/devcontainer.json',
|
|
23
|
+
'.moot/actors.json',
|
|
24
|
+
'.env.product',
|
|
25
|
+
'.env.leader',
|
|
26
|
+
'.env.spec',
|
|
27
|
+
'.env.implementation',
|
|
28
|
+
'.env.qa',
|
|
29
|
+
'.env.librarian',
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
'cursor-ide': {
|
|
33
|
+
name: 'cursor-ide',
|
|
34
|
+
topology: 'host-side-solo',
|
|
35
|
+
description: 'Cursor IDE project-local MCP config (host, solo)',
|
|
36
|
+
paths_written: ['.cursor/mcp.json'],
|
|
37
|
+
},
|
|
38
|
+
sdk: {
|
|
39
|
+
name: 'sdk',
|
|
40
|
+
topology: 'host-side-solo',
|
|
41
|
+
description: 'SDK token for custom harness integration (stdout)',
|
|
42
|
+
paths_written: [],
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
export const DEFAULT_HARNESS = 'claude-code';
|
|
46
|
+
export const RESERVED_BARE_NAMES = ['cursor'];
|
|
47
|
+
export function classifyHarness(name) {
|
|
48
|
+
if (RESERVED_BARE_NAMES.includes(name)) {
|
|
49
|
+
throw new Error(`'${name}' is ambiguous. Did you mean 'cursor-ide' (IDE integration) ` +
|
|
50
|
+
`or 'cursor-agent' (devcontainer agent)?`);
|
|
51
|
+
}
|
|
52
|
+
const entry = HARNESS_REGISTRY[name];
|
|
53
|
+
if (!entry) {
|
|
54
|
+
const known = Object.keys(HARNESS_REGISTRY).join(', ');
|
|
55
|
+
throw new Error(`Unknown harness '${name}'. Known: ${known}.`);
|
|
56
|
+
}
|
|
57
|
+
return entry;
|
|
58
|
+
}
|
|
59
|
+
export function validateFlagMatrix(harness, opts) {
|
|
60
|
+
if (harness.topology === 'host-side-solo' && opts.archetype) {
|
|
61
|
+
throw new Error(`--archetype is incompatible with --harness ${harness.name} ` +
|
|
62
|
+
`(host-side-solo; no team to archetype).`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,gBAAgB,GAAgD;IAC3E,aAAa,EAAE;QACb,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,8CAA8C;QAC3D,aAAa,EAAE;YACb,iCAAiC;YACjC,mBAAmB;YACnB,cAAc;YACd,aAAa;YACb,WAAW;YACX,qBAAqB;YACrB,SAAS;YACT,gBAAgB;SACjB;KACF;IACD,cAAc,EAAE;QACd,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,8DAA8D;QAC3E,aAAa,EAAE;YACb,iCAAiC;YACjC,mBAAmB;YACnB,cAAc;YACd,aAAa;YACb,WAAW;YACX,qBAAqB;YACrB,SAAS;YACT,gBAAgB;SACjB;KACF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,gBAAgB;QAC1B,WAAW,EAAE,kDAAkD;QAC/D,aAAa,EAAE,CAAC,kBAAkB,CAAC;KACpC;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,gBAAgB;QAC1B,WAAW,EAAE,mDAAmD;QAChE,aAAa,EAAE,EAAE;KAClB;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAgB,aAAa,CAAC;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAsB,CAAC,QAAQ,CAAC,CAAC;AAEjE,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,IAAI,IAAI,8DAA8D;YACpE,yCAAyC,CAC5C,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAI,gBAA6D,CAAC,IAAI,CAAC,CAAC;IACnF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,aAAa,KAAK,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAqB,EACrB,IAA4B;IAE5B,IAAI,OAAO,CAAC,QAAQ,KAAK,gBAAgB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,8CAA8C,OAAO,CAAC,IAAI,GAAG;YAC3D,yCAAyC,CAC5C,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/harness/sdk.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBtE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const CONFIG_PATH_HINT = '~/.config/moot/sdk-credentials.toml';
|
|
2
|
+
export async function generateSdk(args) {
|
|
3
|
+
const showToken = args.showToken ?? false;
|
|
4
|
+
if (showToken) {
|
|
5
|
+
console.log(args.token);
|
|
6
|
+
}
|
|
7
|
+
else {
|
|
8
|
+
const suffix = args.token.slice(-4);
|
|
9
|
+
console.log(`Token suffix: ...${suffix} (4 chars)`);
|
|
10
|
+
}
|
|
11
|
+
console.log(`Config path hint: ${CONFIG_PATH_HINT} (or set MOOTUP_PAT env)`);
|
|
12
|
+
console.log(`Revoke at: ${args.apiUrl}/settings/access`);
|
|
13
|
+
if (showToken) {
|
|
14
|
+
console.log(`Warning: --show-token printed the full token to stdout; ` +
|
|
15
|
+
`it may be captured in shell history.`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/harness/sdk.ts"],"names":[],"mappings":"AAMA,MAAM,gBAAgB,GAAG,qCAAqC,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAqB;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC1C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,YAAY,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,gBAAgB,0BAA0B,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,MAAM,kBAAkB,CAAC,CAAC;IACzD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,0DAA0D;YACxD,sCAAsC,CACzC,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,17 @@ export { cmdDown } from './commands/down.js';
|
|
|
5
5
|
export { cmdStatus } from './commands/status.js';
|
|
6
6
|
export { cmdAttach } from './commands/attach.js';
|
|
7
7
|
export { cmdCompact } from './commands/compact.js';
|
|
8
|
+
export { cmdLogout } from './commands/logout.js';
|
|
9
|
+
export { cmdRefresh } from './commands/refresh.js';
|
|
8
10
|
export { containerIdOrNone, execInContainer, devcontainerUp, type ExecFn, type SpawnFn, } from './docker.js';
|
|
9
|
-
export { loadCredential, storeCredential, CRED_DIR, CRED_FILE, type Credential, } from './credential.js';
|
|
11
|
+
export { loadCredential, storeCredential, deleteCredential, CRED_DIR, CRED_FILE, type Credential, type CredentialType, } from './credential.js';
|
|
12
|
+
export { ARCHETYPE_CATALOG, DEFAULT_ARCHETYPE, findArchetype, type ArchetypeEntry, } from './auth/archetypes.js';
|
|
13
|
+
export { storeOAuthCredential, loadRefreshToken, deleteOAuthCredential, KEYTAR_SERVICE, __setKeytarForTest, __clearSessionMemoryForTest, type OAuthCredentialBundle, } from './auth/credentials.js';
|
|
14
|
+
export { runBrowserFlow, refreshAccessToken, revokeRefreshToken, generateIdempotencyKey, shouldUseBrowser, mintPkcePair, mintState, } from './auth/oauth.js';
|
|
15
|
+
export { PROFILE_RE, validateProfile } from './auth/profile.js';
|
|
16
|
+
export { HARNESS_REGISTRY, DEFAULT_HARNESS, RESERVED_BARE_NAMES, classifyHarness, validateFlagMatrix, type HarnessName, type HarnessTopology, type HarnessEntry, } from './harness/index.js';
|
|
17
|
+
export { generateClaudeCode } from './harness/claude-code.js';
|
|
18
|
+
export { generateCursorAgent } from './harness/cursor-agent.js';
|
|
19
|
+
export { generateCursorIde } from './harness/cursor-ide.js';
|
|
20
|
+
export { generateSdk } from './harness/sdk.js';
|
|
10
21
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,KAAK,MAAM,EACX,KAAK,OAAO,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,eAAe,EACf,QAAQ,EACR,SAAS,EACT,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,KAAK,MAAM,EACX,KAAK,OAAO,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,KAAK,UAAU,EACf,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,2BAA2B,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,SAAS,GACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,17 @@ export { cmdDown } from './commands/down.js';
|
|
|
5
5
|
export { cmdStatus } from './commands/status.js';
|
|
6
6
|
export { cmdAttach } from './commands/attach.js';
|
|
7
7
|
export { cmdCompact } from './commands/compact.js';
|
|
8
|
+
export { cmdLogout } from './commands/logout.js';
|
|
9
|
+
export { cmdRefresh } from './commands/refresh.js';
|
|
8
10
|
export { containerIdOrNone, execInContainer, devcontainerUp, } from './docker.js';
|
|
9
|
-
export { loadCredential, storeCredential, CRED_DIR, CRED_FILE, } from './credential.js';
|
|
11
|
+
export { loadCredential, storeCredential, deleteCredential, CRED_DIR, CRED_FILE, } from './credential.js';
|
|
12
|
+
export { ARCHETYPE_CATALOG, DEFAULT_ARCHETYPE, findArchetype, } from './auth/archetypes.js';
|
|
13
|
+
export { storeOAuthCredential, loadRefreshToken, deleteOAuthCredential, KEYTAR_SERVICE, __setKeytarForTest, __clearSessionMemoryForTest, } from './auth/credentials.js';
|
|
14
|
+
export { runBrowserFlow, refreshAccessToken, revokeRefreshToken, generateIdempotencyKey, shouldUseBrowser, mintPkcePair, mintState, } from './auth/oauth.js';
|
|
15
|
+
export { PROFILE_RE, validateProfile } from './auth/profile.js';
|
|
16
|
+
export { HARNESS_REGISTRY, DEFAULT_HARNESS, RESERVED_BARE_NAMES, classifyHarness, validateFlagMatrix, } from './harness/index.js';
|
|
17
|
+
export { generateClaudeCode } from './harness/claude-code.js';
|
|
18
|
+
export { generateCursorAgent } from './harness/cursor-agent.js';
|
|
19
|
+
export { generateCursorIde } from './harness/cursor-ide.js';
|
|
20
|
+
export { generateSdk } from './harness/sdk.js';
|
|
10
21
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,eAAe,EACf,QAAQ,EACR,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,SAAS,GAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,GAEd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,2BAA2B,GAE5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,SAAS,GACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,kBAAkB,GAInB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mootup/moot-cli",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Host-side operator CLI for the Moot agent team workflow. Wraps devcontainer launch and delegates in-container work to the Python moot CLI via docker exec.",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/mootup-io/moot-cli-js.git",
|
|
9
|
+
"directory": "packages/moot-cli"
|
|
10
|
+
},
|
|
6
11
|
"type": "module",
|
|
7
12
|
"main": "./dist/index.js",
|
|
8
13
|
"types": "./dist/index.d.ts",
|
|
9
14
|
"bin": {
|
|
10
|
-
"
|
|
15
|
+
"moot": "./dist/bin.js"
|
|
11
16
|
},
|
|
12
17
|
"exports": {
|
|
13
18
|
".": {
|
|
@@ -20,7 +25,7 @@
|
|
|
20
25
|
"README.md"
|
|
21
26
|
],
|
|
22
27
|
"engines": {
|
|
23
|
-
"node": ">=
|
|
28
|
+
"node": ">=18.0.0"
|
|
24
29
|
},
|
|
25
30
|
"scripts": {
|
|
26
31
|
"build": "tsc -p tsconfig.build.json && chmod +x dist/bin.js",
|
|
@@ -34,6 +39,9 @@
|
|
|
34
39
|
"@mootup/moot-templates": "*",
|
|
35
40
|
"commander": "^12.1.0"
|
|
36
41
|
},
|
|
42
|
+
"optionalDependencies": {
|
|
43
|
+
"keytar": "^7.9.0"
|
|
44
|
+
},
|
|
37
45
|
"devDependencies": {
|
|
38
46
|
"@types/node": "^20.14.0",
|
|
39
47
|
"msw": "^2.4.0",
|