@halyard/cli 0.1.2 → 0.2.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 +88 -1
- package/dist/cli.js +27 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/api-keys.d.ts +3 -0
- package/dist/commands/api-keys.d.ts.map +1 -0
- package/dist/commands/api-keys.js +90 -0
- package/dist/commands/api-keys.js.map +1 -0
- package/dist/commands/hook.d.ts +6 -0
- package/dist/commands/hook.d.ts.map +1 -0
- package/dist/commands/hook.js +106 -0
- package/dist/commands/hook.js.map +1 -0
- package/dist/commands/login.d.ts +17 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +111 -14
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/orgs.d.ts +3 -0
- package/dist/commands/orgs.d.ts.map +1 -0
- package/dist/commands/orgs.js +102 -0
- package/dist/commands/orgs.js.map +1 -0
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +29 -6
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/sessions.d.ts +3 -0
- package/dist/commands/sessions.d.ts.map +1 -0
- package/dist/commands/sessions.js +139 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +28 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/skills.d.ts +12 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +171 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +51 -49
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/users.d.ts +13 -0
- package/dist/commands/users.d.ts.map +1 -0
- package/dist/commands/users.js +205 -0
- package/dist/commands/users.js.map +1 -0
- package/dist/commands/whoami.d.ts +21 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +77 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/lib/api-client.d.ts +64 -2
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +32 -7
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/auth.d.ts +42 -6
- package/dist/lib/auth.d.ts.map +1 -1
- package/dist/lib/auth.js +101 -27
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/config-files.d.ts +6 -0
- package/dist/lib/config-files.d.ts.map +1 -0
- package/dist/lib/config-files.js +27 -0
- package/dist/lib/config-files.js.map +1 -0
- package/dist/lib/config.d.ts +13 -7
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +22 -8
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/copilot-export.d.ts +31 -0
- package/dist/lib/copilot-export.d.ts.map +1 -0
- package/dist/lib/copilot-export.js +129 -0
- package/dist/lib/copilot-export.js.map +1 -0
- package/dist/lib/discovery.d.ts +60 -2
- package/dist/lib/discovery.d.ts.map +1 -1
- package/dist/lib/discovery.js +187 -15
- package/dist/lib/discovery.js.map +1 -1
- package/dist/lib/hook-discovery.d.ts +43 -0
- package/dist/lib/hook-discovery.d.ts.map +1 -0
- package/dist/lib/hook-discovery.js +90 -0
- package/dist/lib/hook-discovery.js.map +1 -0
- package/dist/lib/hook-input.d.ts +36 -0
- package/dist/lib/hook-input.d.ts.map +1 -0
- package/dist/lib/hook-input.js +161 -0
- package/dist/lib/hook-input.js.map +1 -0
- package/dist/lib/hook-runner.d.ts +48 -0
- package/dist/lib/hook-runner.d.ts.map +1 -0
- package/dist/lib/hook-runner.js +306 -0
- package/dist/lib/hook-runner.js.map +1 -0
- package/dist/lib/http.d.ts +18 -0
- package/dist/lib/http.d.ts.map +1 -0
- package/dist/lib/http.js +54 -0
- package/dist/lib/http.js.map +1 -0
- package/dist/lib/opencode-export.d.ts +22 -0
- package/dist/lib/opencode-export.d.ts.map +1 -0
- package/dist/lib/opencode-export.js +53 -0
- package/dist/lib/opencode-export.js.map +1 -0
- package/dist/lib/output.d.ts +27 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +74 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/preflight.d.ts +35 -0
- package/dist/lib/preflight.d.ts.map +1 -0
- package/dist/lib/preflight.js +54 -0
- package/dist/lib/preflight.js.map +1 -0
- package/dist/lib/repo-binding.d.ts +43 -0
- package/dist/lib/repo-binding.d.ts.map +1 -0
- package/dist/lib/repo-binding.js +158 -0
- package/dist/lib/repo-binding.js.map +1 -0
- package/dist/lib/repo-identity.d.ts +29 -0
- package/dist/lib/repo-identity.d.ts.map +1 -0
- package/dist/lib/repo-identity.js +113 -0
- package/dist/lib/repo-identity.js.map +1 -0
- package/dist/lib/setup-hooks.d.ts +41 -0
- package/dist/lib/setup-hooks.d.ts.map +1 -0
- package/dist/lib/setup-hooks.js +276 -0
- package/dist/lib/setup-hooks.js.map +1 -0
- package/dist/lib/setup.d.ts +4 -1
- package/dist/lib/setup.d.ts.map +1 -1
- package/dist/lib/setup.js +20 -31
- package/dist/lib/setup.js.map +1 -1
- package/dist/lib/skill-batches.d.ts +16 -0
- package/dist/lib/skill-batches.d.ts.map +1 -0
- package/dist/lib/skill-batches.js +35 -0
- package/dist/lib/skill-batches.js.map +1 -0
- package/dist/lib/skill-files.d.ts +4 -0
- package/dist/lib/skill-files.d.ts.map +1 -0
- package/dist/lib/skill-files.js +36 -0
- package/dist/lib/skill-files.js.map +1 -0
- package/dist/lib/skill-fingerprint.d.ts +55 -0
- package/dist/lib/skill-fingerprint.d.ts.map +1 -0
- package/dist/lib/skill-fingerprint.js +204 -0
- package/dist/lib/skill-fingerprint.js.map +1 -0
- package/dist/lib/skills-discovery.d.ts +57 -0
- package/dist/lib/skills-discovery.d.ts.map +1 -0
- package/dist/lib/skills-discovery.js +157 -0
- package/dist/lib/skills-discovery.js.map +1 -0
- package/dist/lib/skills-sync.d.ts +66 -0
- package/dist/lib/skills-sync.d.ts.map +1 -0
- package/dist/lib/skills-sync.js +251 -0
- package/dist/lib/skills-sync.js.map +1 -0
- package/dist/lib/sync-runner.d.ts +56 -0
- package/dist/lib/sync-runner.d.ts.map +1 -0
- package/dist/lib/sync-runner.js +106 -0
- package/dist/lib/sync-runner.js.map +1 -0
- package/dist/lib/sync-state.d.ts +36 -6
- package/dist/lib/sync-state.d.ts.map +1 -1
- package/dist/lib/sync-state.js +41 -11
- package/dist/lib/sync-state.js.map +1 -1
- package/package.json +10 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orgs.d.ts","sourceRoot":"","sources":["../../src/commands/orgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqBnC,wBAAgB,WAAW,IAAI,OAAO,CAyGrC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { apiFetch } from '../lib/http.js';
|
|
3
|
+
import { getCredentials, refreshToken } from '../lib/auth.js';
|
|
4
|
+
import { printTable, printJson, fail } from '../lib/output.js';
|
|
5
|
+
async function listOrgs(apiUrl) {
|
|
6
|
+
const response = await apiFetch(apiUrl, '/api/v1/organizations');
|
|
7
|
+
return response.organizations;
|
|
8
|
+
}
|
|
9
|
+
export function orgsCommand() {
|
|
10
|
+
const orgs = new Command('orgs').description('List and switch between your organizations');
|
|
11
|
+
orgs
|
|
12
|
+
.command('list')
|
|
13
|
+
.description('List organizations you belong to')
|
|
14
|
+
.action(async function () {
|
|
15
|
+
const globalOpts = this.optsWithGlobals();
|
|
16
|
+
const apiUrl = globalOpts.apiUrl;
|
|
17
|
+
let organizations;
|
|
18
|
+
try {
|
|
19
|
+
organizations = await listOrgs(apiUrl);
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
fail(err instanceof Error ? err.message : String(err));
|
|
23
|
+
}
|
|
24
|
+
if (globalOpts.json) {
|
|
25
|
+
printJson({ organizations });
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
printTable(organizations, [
|
|
29
|
+
{ key: 'isCurrent', header: '', format: (v) => (v ? '*' : '') },
|
|
30
|
+
{ key: 'id', header: 'ID' },
|
|
31
|
+
{ key: 'name', header: 'NAME' },
|
|
32
|
+
{ key: 'slug', header: 'SLUG', format: (v) => String(v) },
|
|
33
|
+
{ key: 'userRole', header: 'ROLE' },
|
|
34
|
+
{ key: 'memberCount', header: 'MEMBERS' },
|
|
35
|
+
{ key: 'isHome', header: 'HOME', format: (v) => (v ? 'yes' : '') },
|
|
36
|
+
]);
|
|
37
|
+
});
|
|
38
|
+
orgs
|
|
39
|
+
.command('switch')
|
|
40
|
+
.description('Switch the active organization (reissues your OAuth token)')
|
|
41
|
+
.argument('<org>', 'Organization ID or slug (from `halyard orgs list`)')
|
|
42
|
+
.action(async function (orgArg) {
|
|
43
|
+
const globalOpts = this.optsWithGlobals();
|
|
44
|
+
const apiUrl = globalOpts.apiUrl;
|
|
45
|
+
// Operate on the legacy/default chain explicitly (binding = null):
|
|
46
|
+
// switching must never rotate a per-org file's refresh token while
|
|
47
|
+
// persisting the result to the legacy file.
|
|
48
|
+
const creds = getCredentials(null);
|
|
49
|
+
if (!creds) {
|
|
50
|
+
fail('Not authenticated. Run `halyard login`.');
|
|
51
|
+
}
|
|
52
|
+
if (process.env['HALYARD_TOKEN'] || creds.accessToken.startsWith('sk_halyard_')) {
|
|
53
|
+
fail('Workspace switching requires OAuth login (API keys are bound to one organization). Run `halyard login`.');
|
|
54
|
+
}
|
|
55
|
+
if (!creds.clientId || !creds.refreshToken) {
|
|
56
|
+
fail('Stored credentials cannot be refreshed. Run `halyard login` to re-authenticate.');
|
|
57
|
+
}
|
|
58
|
+
// Resolve slug or id against the orgs the account is linked to.
|
|
59
|
+
let organizations;
|
|
60
|
+
try {
|
|
61
|
+
organizations = await listOrgs(apiUrl);
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
fail(err instanceof Error ? err.message : String(err));
|
|
65
|
+
}
|
|
66
|
+
const target = organizations.find((org) => org.id === orgArg || org.slug === orgArg);
|
|
67
|
+
if (!target) {
|
|
68
|
+
const available = organizations.map((org) => ` ${org.slug} (${org.id})`).join('\n');
|
|
69
|
+
fail(`No organization matching "${orgArg}". Available:\n${available}`);
|
|
70
|
+
}
|
|
71
|
+
if (target.isCurrent) {
|
|
72
|
+
console.log(`Already in ${target.name} (${target.slug}).`);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// Reissue the token scoped to the target org. The server validates
|
|
76
|
+
// membership before rotating the refresh token, so a failure here
|
|
77
|
+
// leaves the stored credentials untouched.
|
|
78
|
+
try {
|
|
79
|
+
await refreshToken(creds.refreshToken, creds.clientId, apiUrl, target.id);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
fail(err instanceof Error ? err.message : String(err));
|
|
83
|
+
}
|
|
84
|
+
let me;
|
|
85
|
+
try {
|
|
86
|
+
me = await apiFetch(apiUrl, '/api/v1/me');
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
fail(err instanceof Error ? err.message : String(err));
|
|
90
|
+
}
|
|
91
|
+
if (globalOpts.json) {
|
|
92
|
+
printJson({ switched: true, organization: me.organization });
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const org = me.organization;
|
|
96
|
+
console.log(org
|
|
97
|
+
? `Switched to ${org.name} (${org.slug}). Credentials updated.`
|
|
98
|
+
: 'Switched. Credentials updated.');
|
|
99
|
+
});
|
|
100
|
+
return orgs;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=orgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orgs.js","sourceRoot":"","sources":["../../src/commands/orgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAa9D,KAAK,UAAU,QAAQ,CAAC,MAAc;IACpC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAkC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IACjG,OAAO,QAAQ,CAAC,aAAa,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAA;IAE1F,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,KAAK;QACX,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QACzC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAgB,CAAA;QAE1C,IAAI,aAA2B,CAAA;QAC/B,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAA;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACpB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC,CAAA;YAC5B,OAAM;QACR,CAAC;QAED,UAAU,CAAC,aAAqD,EAAE;YAChE,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;YAC/D,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;YAC3B,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;YAC/B,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACzD,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE;YACnC,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE;YACzC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;SACnE,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEJ,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,4DAA4D,CAAC;SACzE,QAAQ,CAAC,OAAO,EAAE,oDAAoD,CAAC;SACvE,MAAM,CAAC,KAAK,WAA0B,MAAc;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QACzC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAgB,CAAA;QAE1C,mEAAmE;QACnE,mEAAmE;QACnE,4CAA4C;QAC5C,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,yCAAyC,CAAC,CAAA;QACjD,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAChF,IAAI,CACF,yGAAyG,CAC1G,CAAA;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC3C,IAAI,CAAC,iFAAiF,CAAC,CAAA;QACzF,CAAC;QAED,gEAAgE;QAChE,IAAI,aAA2B,CAAA;QAC/B,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAA;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACxD,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;QACpF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrF,IAAI,CAAC,6BAA6B,MAAM,kBAAkB,SAAS,EAAE,CAAC,CAAA;QACxE,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAA;YAC1D,OAAM;QACR,CAAC;QAED,mEAAmE;QACnE,kEAAkE;QAClE,2CAA2C;QAC3C,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QAC3E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,EAAc,CAAA;QAClB,IAAI,CAAC;YACH,EAAE,GAAG,MAAM,QAAQ,CAAa,MAAM,EAAE,YAAY,CAAC,CAAA;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACpB,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC,CAAA;YAC5D,OAAM;QACR,CAAC;QAED,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAA;QAC3B,OAAO,CAAC,GAAG,CACT,GAAG;YACD,CAAC,CAAC,eAAe,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,yBAAyB;YAC/D,CAAC,CAAC,gCAAgC,CACrC,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoBnC,wBAAgB,WAAW,IAAI,OAAO,CA6FrC"}
|
package/dist/commands/push.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { readFileSync, statSync } from 'node:fs';
|
|
2
|
-
import { basename } from 'node:path';
|
|
2
|
+
import { basename, extname } from 'node:path';
|
|
3
3
|
import { Command } from 'commander';
|
|
4
4
|
import { getAuthHeaders } from '../lib/auth.js';
|
|
5
5
|
import { uploadSession } from '../lib/api-client.js';
|
|
6
|
+
import { findRepoBinding } from '../lib/repo-binding.js';
|
|
7
|
+
import { runPreflight } from '../lib/preflight.js';
|
|
6
8
|
import { readSyncState, writeSyncState, markUploaded, hashFileContents } from '../lib/sync-state.js';
|
|
7
9
|
/**
|
|
8
10
|
* Detect provider from file path heuristics.
|
|
@@ -12,6 +14,12 @@ function detectProvider(filePath) {
|
|
|
12
14
|
return 'claude';
|
|
13
15
|
if (filePath.includes('.codex/') || filePath.includes('/codex/'))
|
|
14
16
|
return 'codex';
|
|
17
|
+
if (filePath.includes('.gemini/') || filePath.includes('/gemini/'))
|
|
18
|
+
return 'gemini';
|
|
19
|
+
if (filePath.includes('opencode/') || filePath.includes('.opencode/'))
|
|
20
|
+
return 'opencode';
|
|
21
|
+
if (filePath.includes('.copilot/') || filePath.includes('/copilot/'))
|
|
22
|
+
return 'copilot';
|
|
15
23
|
if (filePath.includes('.cursor/') || filePath.includes('/cursor/'))
|
|
16
24
|
return 'cursor';
|
|
17
25
|
return null;
|
|
@@ -20,7 +28,7 @@ export function pushCommand() {
|
|
|
20
28
|
return new Command('push')
|
|
21
29
|
.description('Upload a single session log file to Halyard')
|
|
22
30
|
.argument('<path>', 'Path to the session log file (.jsonl)')
|
|
23
|
-
.option('--provider <provider>', 'Provider (claude, codex, cursor, other)')
|
|
31
|
+
.option('--provider <provider>', 'Provider (claude, codex, gemini, opencode, copilot, cursor, other)')
|
|
24
32
|
.option('--session-id <id>', 'Session ID (defaults to filename without extension)')
|
|
25
33
|
.action(async function (filePath) {
|
|
26
34
|
const opts = this.opts();
|
|
@@ -41,7 +49,22 @@ export function pushCommand() {
|
|
|
41
49
|
}
|
|
42
50
|
// Determine provider
|
|
43
51
|
const provider = opts.provider ?? detectProvider(filePath) ?? 'other';
|
|
44
|
-
const sessionId = opts.sessionId ?? basename(filePath,
|
|
52
|
+
const sessionId = opts.sessionId ?? basename(filePath, extname(filePath));
|
|
53
|
+
// Preflight: resolve + print the destination org; hard-fail on a
|
|
54
|
+
// binding/credentials org mismatch.
|
|
55
|
+
let target;
|
|
56
|
+
try {
|
|
57
|
+
target = await runPreflight({
|
|
58
|
+
apiUrl,
|
|
59
|
+
binding: findRepoBinding(),
|
|
60
|
+
scopeLabel: filePath,
|
|
61
|
+
verb: 'Pushing',
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
45
68
|
// Authenticate
|
|
46
69
|
let authHeaders;
|
|
47
70
|
try {
|
|
@@ -54,8 +77,9 @@ export function pushCommand() {
|
|
|
54
77
|
// Upload
|
|
55
78
|
const sizeKb = (stat.size / 1024).toFixed(1);
|
|
56
79
|
console.log(`Uploading ${filePath} (${sizeKb} KB) as ${provider} session...`);
|
|
80
|
+
const content = readFileSync(filePath);
|
|
57
81
|
try {
|
|
58
|
-
const result = await uploadSession(filePath, provider, sessionId, authHeaders, apiUrl);
|
|
82
|
+
const result = await uploadSession(content, basename(filePath), provider, sessionId, authHeaders, apiUrl);
|
|
59
83
|
if (result.status === 'duplicate') {
|
|
60
84
|
console.log(`Session already exists (ID: ${result.sessionId})`);
|
|
61
85
|
}
|
|
@@ -63,10 +87,9 @@ export function pushCommand() {
|
|
|
63
87
|
console.log(`Uploaded successfully (ID: ${result.sessionId})`);
|
|
64
88
|
}
|
|
65
89
|
// Update sync state
|
|
66
|
-
const content = readFileSync(filePath);
|
|
67
90
|
const hash = hashFileContents(content);
|
|
68
91
|
const syncState = readSyncState();
|
|
69
|
-
markUploaded(syncState, filePath, {
|
|
92
|
+
markUploaded(syncState, target.stateKey, filePath, {
|
|
70
93
|
sessionId: result.sessionId,
|
|
71
94
|
uploadedAt: new Date().toISOString(),
|
|
72
95
|
size: stat.size,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsCnC,wBAAgB,eAAe,IAAI,OAAO,CAqIzC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { apiFetch, ApiError } from '../lib/http.js';
|
|
3
|
+
import { printTable, printJson, formatDate, fail } from '../lib/output.js';
|
|
4
|
+
function formatSize(value) {
|
|
5
|
+
if (typeof value !== 'number')
|
|
6
|
+
return '-';
|
|
7
|
+
return `${(value / 1024).toFixed(1)} KB`;
|
|
8
|
+
}
|
|
9
|
+
/** Wall-clock span between first and last activity on the session. */
|
|
10
|
+
function formatDuration(row) {
|
|
11
|
+
const start = new Date(String(row['createdAt'])).getTime();
|
|
12
|
+
const end = new Date(String(row['updatedAt'])).getTime();
|
|
13
|
+
if (Number.isNaN(start) || Number.isNaN(end) || end < start)
|
|
14
|
+
return '-';
|
|
15
|
+
const totalMinutes = Math.round((end - start) / 60_000);
|
|
16
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
17
|
+
const minutes = totalMinutes % 60;
|
|
18
|
+
return hours > 0 ? `${hours}h ${minutes}m` : `${minutes}m`;
|
|
19
|
+
}
|
|
20
|
+
export function sessionsCommand() {
|
|
21
|
+
const sessions = new Command('sessions').description('Inspect uploaded agent sessions (use --json for machine-readable output)');
|
|
22
|
+
sessions
|
|
23
|
+
.command('list')
|
|
24
|
+
.description('List sessions in the organization')
|
|
25
|
+
.option('--state <state>', 'Filter by state (RUNNING, NEEDS_INPUT, COMPLETED, FAILED)')
|
|
26
|
+
.option('--limit <n>', 'Max sessions to return (default 50)')
|
|
27
|
+
.option('--offset <n>', 'Pagination offset')
|
|
28
|
+
.action(async function () {
|
|
29
|
+
const globalOpts = this.optsWithGlobals();
|
|
30
|
+
const apiUrl = globalOpts.apiUrl;
|
|
31
|
+
const opts = this.opts();
|
|
32
|
+
const params = new URLSearchParams();
|
|
33
|
+
if (opts.state)
|
|
34
|
+
params.set('state', opts.state);
|
|
35
|
+
if (opts.limit)
|
|
36
|
+
params.set('limit', opts.limit);
|
|
37
|
+
if (opts.offset)
|
|
38
|
+
params.set('offset', opts.offset);
|
|
39
|
+
const query = params.size > 0 ? `?${params.toString()}` : '';
|
|
40
|
+
let response;
|
|
41
|
+
try {
|
|
42
|
+
response = await apiFetch(apiUrl, `/api/v1/sessions${query}`);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
fail(err instanceof Error ? err.message : String(err));
|
|
46
|
+
}
|
|
47
|
+
if (globalOpts.json) {
|
|
48
|
+
printJson(response);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (response.sessions.length === 0) {
|
|
52
|
+
console.log('No sessions found.');
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const rows = response.sessions.map((session) => ({
|
|
56
|
+
...session,
|
|
57
|
+
duration: formatDuration(session),
|
|
58
|
+
}));
|
|
59
|
+
printTable(rows, [
|
|
60
|
+
{ key: 'id', header: 'ID' },
|
|
61
|
+
{ key: 'source', header: 'SOURCE' },
|
|
62
|
+
{ key: 'state', header: 'STATE' },
|
|
63
|
+
{ key: 'name', header: 'NAME' },
|
|
64
|
+
{ key: 'eventCount', header: 'EVENTS' },
|
|
65
|
+
{ key: 'rawLogSizeBytes', header: 'LOG SIZE', format: formatSize },
|
|
66
|
+
{ key: 'createdAt', header: 'STARTED', format: formatDate },
|
|
67
|
+
{ key: 'duration', header: 'DURATION' },
|
|
68
|
+
]);
|
|
69
|
+
console.log('');
|
|
70
|
+
console.log(`${response.sessions.length} of ${response.total} session(s)`);
|
|
71
|
+
});
|
|
72
|
+
sessions
|
|
73
|
+
.command('describe')
|
|
74
|
+
.description('Show full session details (conversations, latest events, client)')
|
|
75
|
+
.argument('<id>', 'Session ID (from `halyard sessions list`)')
|
|
76
|
+
.action(async function (id) {
|
|
77
|
+
const globalOpts = this.optsWithGlobals();
|
|
78
|
+
const apiUrl = globalOpts.apiUrl;
|
|
79
|
+
let response;
|
|
80
|
+
try {
|
|
81
|
+
response = await apiFetch(apiUrl, `/api/v1/sessions/${id}`);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
if (err instanceof ApiError && err.status === 404) {
|
|
85
|
+
fail('Session not found in this organization.');
|
|
86
|
+
}
|
|
87
|
+
fail(err instanceof Error ? err.message : String(err));
|
|
88
|
+
}
|
|
89
|
+
if (globalOpts.json) {
|
|
90
|
+
printJson(response);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const s = response.session;
|
|
94
|
+
const row = (label, value) => console.log(`${label.padEnd(12)}${value}`);
|
|
95
|
+
row('ID:', String(s['id']));
|
|
96
|
+
row('Name:', s['name'] ? String(s['name']) : '-');
|
|
97
|
+
row('Source:', String(s['source']));
|
|
98
|
+
row('State:', String(s['state']));
|
|
99
|
+
row('Started:', formatDate(s['createdAt']));
|
|
100
|
+
row('Updated:', formatDate(s['updatedAt']));
|
|
101
|
+
row('Duration:', formatDuration(s));
|
|
102
|
+
row('Log size:', formatSize(s['rawLogSizeBytes']));
|
|
103
|
+
const events = s['events'];
|
|
104
|
+
const conversations = s['conversations'];
|
|
105
|
+
row('Events:', String(events?.length ?? 0) + ' (latest 100; use `sessions events` for all)');
|
|
106
|
+
row('Convos:', String(conversations?.length ?? 0));
|
|
107
|
+
});
|
|
108
|
+
sessions
|
|
109
|
+
.command('events')
|
|
110
|
+
.description('Fetch session events as JSON (payloads for cost/length analysis)')
|
|
111
|
+
.argument('<id>', 'Session ID')
|
|
112
|
+
.option('--limit <n>', 'Max events to return (default 50)')
|
|
113
|
+
.option('--offset <n>', 'Pagination offset')
|
|
114
|
+
.action(async function (id) {
|
|
115
|
+
const globalOpts = this.optsWithGlobals();
|
|
116
|
+
const apiUrl = globalOpts.apiUrl;
|
|
117
|
+
const opts = this.opts();
|
|
118
|
+
const params = new URLSearchParams();
|
|
119
|
+
if (opts.limit)
|
|
120
|
+
params.set('limit', opts.limit);
|
|
121
|
+
if (opts.offset)
|
|
122
|
+
params.set('offset', opts.offset);
|
|
123
|
+
const query = params.size > 0 ? `?${params.toString()}` : '';
|
|
124
|
+
let response;
|
|
125
|
+
try {
|
|
126
|
+
response = await apiFetch(apiUrl, `/api/v1/sessions/${id}/events${query}`);
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
if (err instanceof ApiError && err.status === 404) {
|
|
130
|
+
fail('Session not found in this organization.');
|
|
131
|
+
}
|
|
132
|
+
fail(err instanceof Error ? err.message : String(err));
|
|
133
|
+
}
|
|
134
|
+
// Event payloads are arbitrary JSON - always emit JSON here.
|
|
135
|
+
printJson(response);
|
|
136
|
+
});
|
|
137
|
+
return sessions;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,wBAAgB,YAAY,IAAI,OAAO,CAwDtC"}
|
package/dist/commands/setup.js
CHANGED
|
@@ -1,14 +1,29 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import { runSetup } from '../lib/setup.js';
|
|
3
|
+
import { writeRepoBinding } from '../lib/repo-binding.js';
|
|
3
4
|
export function setupCommand() {
|
|
4
5
|
return new Command('setup')
|
|
5
6
|
.alias('init')
|
|
6
7
|
.description('Scaffold Halyard for Claude Code, Cursor, and Codex')
|
|
7
8
|
.option('--dry-run', 'Show the changes without writing config files')
|
|
9
|
+
.option('--org <slug>', 'Bind this repo to an organization (writes .halyard.json; sync, push and the session-upload hooks refuse credentials for any other org)')
|
|
10
|
+
.option('--force', 'Overwrite an existing .halyard.json bound to a different org')
|
|
11
|
+
.option('--no-hooks', 'Skip the session-upload hooks (launcher + per-client lifecycle hook config)')
|
|
8
12
|
.action(async function () {
|
|
9
13
|
const opts = this.opts();
|
|
10
14
|
const dryRun = !!opts.dryRun;
|
|
11
|
-
const
|
|
15
|
+
const org = opts.org;
|
|
16
|
+
if (org) {
|
|
17
|
+
try {
|
|
18
|
+
const binding = writeRepoBinding({ org, force: !!opts.force, dryRun });
|
|
19
|
+
console.log(formatBindingResult(binding.status, binding.filePath, org, dryRun));
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const results = runSetup({ dryRun, hooks: opts.hooks !== false });
|
|
12
27
|
console.log(dryRun
|
|
13
28
|
? 'Previewing Halyard scaffold for this repository...'
|
|
14
29
|
: 'Scaffolding Halyard for this repository...');
|
|
@@ -18,16 +33,26 @@ export function setupCommand() {
|
|
|
18
33
|
console.log('');
|
|
19
34
|
console.log(dryRun
|
|
20
35
|
? 'Dry run only. Re-run without `--dry-run` to write the scaffold.'
|
|
21
|
-
: 'Scaffold complete. Claude/Cursor/Codex will prompt for OAuth the first time Halyard is used
|
|
36
|
+
: 'Scaffold complete. Claude/Cursor/Codex will prompt for OAuth the first time Halyard is used;\n' +
|
|
37
|
+
'every client now uploads its sessions through .halyard/hook.sh -> `halyard hook` (see `halyard hook --help`).');
|
|
22
38
|
console.log('Zero-install usage: `bunx @halyard/cli init` or `pnpm dlx @halyard/cli init` from your repo root.');
|
|
23
39
|
if (results.some((entry) => entry.status === 'error')) {
|
|
24
40
|
process.exit(1);
|
|
25
41
|
}
|
|
26
42
|
});
|
|
27
43
|
}
|
|
44
|
+
function formatBindingResult(status, filePath, org, dryRun) {
|
|
45
|
+
if (status === 'unchanged') {
|
|
46
|
+
return `Repo already bound to "${org}" (${filePath}).`;
|
|
47
|
+
}
|
|
48
|
+
const verb = status === 'created' ? 'Bound' : 'Rebound';
|
|
49
|
+
return dryRun
|
|
50
|
+
? `[dry-run] Would ${verb.toLowerCase()} this repo to "${org}" (${filePath}).`
|
|
51
|
+
: `${verb} this repo to "${org}" (${filePath}).`;
|
|
52
|
+
}
|
|
28
53
|
function formatResult(entry) {
|
|
29
54
|
const status = entry.status.padEnd(9, ' ');
|
|
30
|
-
const label = `${entry.target}:${entry.scope}`.padEnd(
|
|
55
|
+
const label = `${entry.target}:${entry.scope}`.padEnd(18, ' ');
|
|
31
56
|
return ` ${status} ${label} ${entry.location} - ${entry.detail}`;
|
|
32
57
|
}
|
|
33
58
|
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAoB,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import type { SkillUpload } from '../lib/api-client.js';
|
|
3
|
+
import { type DiscoveredSkill } from '../lib/skills-discovery.js';
|
|
4
|
+
/**
|
|
5
|
+
* One `skills list` row. `upload` says how many manifest files would go up
|
|
6
|
+
* with their bytes — SKILL.md rides as front-matter + body, so a lone
|
|
7
|
+
* SKILL.md reads `0/1 files` — which keeps the dry run honest about what
|
|
8
|
+
* the sync sends.
|
|
9
|
+
*/
|
|
10
|
+
export declare function skillListRow(skill: DiscoveredSkill, upload: SkillUpload): Record<string, unknown>;
|
|
11
|
+
export declare function skillsCommand(): Command;
|
|
12
|
+
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAavD,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAA;AAqBnC;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcjG;AAsHD,wBAAgB,aAAa,IAAI,OAAO,CAoBvC"}
|