hacklab 0.7.4 → 0.8.5
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 +16 -1
- package/dist/api-client.d.ts +18 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +40 -0
- package/dist/api-client.js.map +1 -0
- package/dist/commands/book.d.ts +14 -0
- package/dist/commands/book.d.ts.map +1 -0
- package/dist/commands/book.js +90 -0
- package/dist/commands/book.js.map +1 -0
- package/dist/commands/chat.d.ts +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +3 -0
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/drop.d.ts +1 -1
- package/dist/commands/drop.js +1 -1
- package/dist/commands/hacker.d.ts.map +1 -1
- package/dist/commands/hacker.js +24 -30
- package/dist/commands/hacker.js.map +1 -1
- package/dist/commands/join.d.ts +4 -2
- package/dist/commands/join.d.ts.map +1 -1
- package/dist/commands/join.js +78 -45
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/keys.d.ts +2 -0
- package/dist/commands/keys.d.ts.map +1 -0
- package/dist/commands/keys.js +138 -0
- package/dist/commands/keys.js.map +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +3 -6
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/org.d.ts +7 -7
- package/dist/commands/org.d.ts.map +1 -1
- package/dist/commands/org.js +407 -32
- package/dist/commands/org.js.map +1 -1
- package/dist/commands/profile.d.ts +60 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +474 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/project.d.ts +5 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +387 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/scout.d.ts +18 -0
- package/dist/commands/scout.d.ts.map +1 -0
- package/dist/commands/scout.js +232 -0
- package/dist/commands/scout.js.map +1 -0
- package/dist/field-normalize.d.ts +4 -0
- package/dist/field-normalize.d.ts.map +1 -0
- package/dist/field-normalize.js +8 -0
- package/dist/field-normalize.js.map +1 -0
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/machine.d.ts +15 -0
- package/dist/machine.d.ts.map +1 -0
- package/dist/machine.js +64 -0
- package/dist/machine.js.map +1 -0
- package/dist/org-fields.d.ts +57 -0
- package/dist/org-fields.d.ts.map +1 -0
- package/dist/org-fields.js +167 -0
- package/dist/org-fields.js.map +1 -0
- package/dist/posthog.d.ts +34 -5
- package/dist/posthog.d.ts.map +1 -1
- package/dist/posthog.js +217 -13
- package/dist/posthog.js.map +1 -1
- package/dist/project-infer.d.ts +50 -0
- package/dist/project-infer.d.ts.map +1 -0
- package/dist/project-infer.js +211 -0
- package/dist/project-infer.js.map +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +37 -9
- package/dist/registry.js.map +1 -1
- package/dist/sync.d.ts +3 -0
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +7 -0
- package/dist/sync.js.map +1 -1
- package/dist/ui.d.ts +1 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +5 -0
- package/dist/ui.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/brag.d.ts +0 -5
- package/dist/commands/brag.d.ts.map +0 -1
- package/dist/commands/brag.js +0 -92
- package/dist/commands/brag.js.map +0 -1
- package/dist/project-brag.d.ts +0 -58
- package/dist/project-brag.d.ts.map +0 -1
- package/dist/project-brag.js +0 -270
- package/dist/project-brag.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scout.js","sourceRoot":"","sources":["../../src/commands/scout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-normalize.d.ts","sourceRoot":"","sources":["../src/field-normalize.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,aAA2C,CAAA;AAClE,eAAO,MAAM,WAAW,aAA4C,CAAA;AAEpE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Tiny value-shaping helpers shared by the profile and org field surfaces.
|
|
2
|
+
// Real validation lives server-side; these only make honest inputs sendable.
|
|
3
|
+
export const TRUE_WORDS = new Set(['true', 'yes', 'y', '1', 'on']);
|
|
4
|
+
export const FALSE_WORDS = new Set(['false', 'no', 'n', '0', 'off']);
|
|
5
|
+
export function ensureScheme(value) {
|
|
6
|
+
return /^https?:\/\//i.test(value) ? value : `https://${value}`;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=field-normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-normalize.js","sourceRoot":"","sources":["../src/field-normalize.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,6EAA6E;AAE7E,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;AAClE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAEpE,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,KAAK,EAAE,CAAA;AACjE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { clearSyncPaused, readSyncPaused } from './daily-sync.js';
|
|
4
|
-
import {
|
|
4
|
+
import { captureException, maybePrintTelemetryNotice, shutdownTelemetry, } from './posthog.js';
|
|
5
5
|
import { COMMANDS, findCommand } from './registry.js';
|
|
6
6
|
import { resolveCommand } from './resolve-command.js';
|
|
7
7
|
import { HACKLAB_ENVIRONMENTS, loadSession, resolveHacklabEnv, } from './session.js';
|
|
@@ -107,6 +107,10 @@ async function main() {
|
|
|
107
107
|
console.log(VERSION);
|
|
108
108
|
process.exit(0);
|
|
109
109
|
}
|
|
110
|
+
// One-time anonymous-telemetry notice (interactive only, shown once). Before
|
|
111
|
+
// the update nudge so, on the very first run, consent is disclosed above any
|
|
112
|
+
// other output.
|
|
113
|
+
await maybePrintTelemetryNotice();
|
|
110
114
|
// One-line nudge if a newer hacklab is published (interactive only, cached
|
|
111
115
|
// daily, timeout-guarded). Must run before any command output so it reads as
|
|
112
116
|
// a header, not buried in results.
|
|
@@ -138,12 +142,15 @@ async function main() {
|
|
|
138
142
|
}
|
|
139
143
|
}
|
|
140
144
|
await command.run(args);
|
|
145
|
+
// Best-effort final flush for the happy path. Per-event captures already flush
|
|
146
|
+
// eagerly (flushAt: 1), so this mainly drains any autocaptured exception.
|
|
147
|
+
await shutdownTelemetry();
|
|
141
148
|
}
|
|
142
149
|
main().catch(async (err) => {
|
|
143
150
|
console.error(err instanceof Error ? err.message : String(err));
|
|
144
151
|
const session = await loadSession().catch(() => null);
|
|
145
|
-
|
|
146
|
-
await
|
|
152
|
+
await captureException(err, session?.handle);
|
|
153
|
+
await shutdownTelemetry();
|
|
147
154
|
process.exit(1);
|
|
148
155
|
});
|
|
149
156
|
//# 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":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare function getMachinePath(): string;
|
|
2
|
+
export type MachineIdentity = {
|
|
3
|
+
machineId: string;
|
|
4
|
+
/** Best-effort hostname for a friendlier "synced from N machines" UI later. */
|
|
5
|
+
machineName: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Load this machine's id, generating and persisting one on first use. Uses an
|
|
9
|
+
* exclusive create so two concurrent syncs (e.g. the daily daemon racing an
|
|
10
|
+
* interactive run) can't each mint a different id — the loser reads back the
|
|
11
|
+
* winner's file. Falls back to an ephemeral id only if the file can't be
|
|
12
|
+
* written at all, so sync never hard-fails on a read-only home directory.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getMachineIdentity(): Promise<MachineIdentity>;
|
|
15
|
+
//# sourceMappingURL=machine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"AAoBA,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAyBD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAoBnE"}
|
package/dist/machine.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { homedir, hostname } from 'node:os';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
/**
|
|
6
|
+
* Stable per-machine identity for token sync.
|
|
7
|
+
*
|
|
8
|
+
* The backend sums token usage across a user's machines and needs each machine
|
|
9
|
+
* to be distinguishable so a re-run from one machine is idempotent (it replaces
|
|
10
|
+
* that machine's contribution) while a second machine adds on top. We identify a
|
|
11
|
+
* machine with a random id generated once and persisted here.
|
|
12
|
+
*
|
|
13
|
+
* The id is deliberately env-independent — a machine is one machine whether you
|
|
14
|
+
* `hacklab sync --env prod` or `--env dev`; each backend tracks that same id in
|
|
15
|
+
* its own database. So this lives next to the session, not per-backend.
|
|
16
|
+
*/
|
|
17
|
+
const MACHINE_PATH = join(homedir(), '.hacklab', 'machine.json');
|
|
18
|
+
export function getMachinePath() {
|
|
19
|
+
return process.env.HACKLAB_MACHINE_PATH ?? MACHINE_PATH;
|
|
20
|
+
}
|
|
21
|
+
function isValid(data) {
|
|
22
|
+
return (typeof data === 'object' &&
|
|
23
|
+
data !== null &&
|
|
24
|
+
typeof data.machineId === 'string' &&
|
|
25
|
+
data.machineId.length > 0);
|
|
26
|
+
}
|
|
27
|
+
async function readMachineId(path) {
|
|
28
|
+
try {
|
|
29
|
+
const parsed = JSON.parse(await readFile(path, 'utf8'));
|
|
30
|
+
return isValid(parsed) ? parsed.machineId : null;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Load this machine's id, generating and persisting one on first use. Uses an
|
|
38
|
+
* exclusive create so two concurrent syncs (e.g. the daily daemon racing an
|
|
39
|
+
* interactive run) can't each mint a different id — the loser reads back the
|
|
40
|
+
* winner's file. Falls back to an ephemeral id only if the file can't be
|
|
41
|
+
* written at all, so sync never hard-fails on a read-only home directory.
|
|
42
|
+
*/
|
|
43
|
+
export async function getMachineIdentity() {
|
|
44
|
+
const path = getMachinePath();
|
|
45
|
+
const existing = await readMachineId(path);
|
|
46
|
+
if (existing)
|
|
47
|
+
return { machineId: existing, machineName: hostname() };
|
|
48
|
+
const machineId = randomUUID();
|
|
49
|
+
const body = `${JSON.stringify({ machineId, createdAt: new Date().toISOString() }, null, 2)}\n`;
|
|
50
|
+
try {
|
|
51
|
+
await mkdir(dirname(path), { recursive: true });
|
|
52
|
+
// 'wx' fails if another process created it first; re-read to adopt theirs.
|
|
53
|
+
await writeFile(path, body, { encoding: 'utf8', flag: 'wx' });
|
|
54
|
+
return { machineId, machineName: hostname() };
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
const raced = await readMachineId(path);
|
|
58
|
+
return {
|
|
59
|
+
machineId: raced ?? machineId,
|
|
60
|
+
machineName: hostname(),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=machine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine.js","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC;;;;;;;;;;;GAWG;AAEH,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,CAAA;AAEhE,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,YAAY,CAAA;AACzD,CAAC;AAaD,SAAS,OAAO,CAAC,IAAa;IAC5B,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,OAAQ,IAAgC,CAAC,SAAS,KAAK,QAAQ;QAC9D,IAA8B,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CACrD,CAAA;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAY,CAAA;QAClE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;IAE7B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;IAC1C,IAAI,QAAQ;QAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAA;IAErE,MAAM,SAAS,GAAG,UAAU,EAAE,CAAA;IAC9B,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAwB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;IACrH,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/C,2EAA2E;QAC3E,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;QACvC,OAAO;YACL,SAAS,EAAE,KAAK,IAAI,SAAS;YAC7B,WAAW,EAAE,QAAQ,EAAE;SACxB,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export type OrgFieldType = 'text' | 'url' | 'number' | 'boolean' | 'list';
|
|
2
|
+
export type OrgFieldSpec = {
|
|
3
|
+
/** API key sent to /api/cli/org. */
|
|
4
|
+
key: string;
|
|
5
|
+
/** CLI-facing name (`hacklab org set <name> …`). */
|
|
6
|
+
name: string;
|
|
7
|
+
/** Label shown in the interactive editor. */
|
|
8
|
+
label: string;
|
|
9
|
+
type: OrgFieldType;
|
|
10
|
+
};
|
|
11
|
+
export declare const ORG_FIELDS: OrgFieldSpec[];
|
|
12
|
+
export declare const ORG_FIELD_NAMES: string[];
|
|
13
|
+
export type OrgValue = string | number | boolean | string[] | null;
|
|
14
|
+
export type NormalizedOrgValue = {
|
|
15
|
+
ok: true;
|
|
16
|
+
value: OrgValue;
|
|
17
|
+
} | {
|
|
18
|
+
ok: false;
|
|
19
|
+
error: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Shape one raw CLI string into the value the API expects. Empty clears the
|
|
23
|
+
* field (except name/slug, which are required). URLs get https:// prepended
|
|
24
|
+
* when the scheme is missing; lists split on commas. Real validation (slug
|
|
25
|
+
* pattern, lengths, URL syntax) stays server-side.
|
|
26
|
+
*/
|
|
27
|
+
export declare function normalizeOrgFieldValue(spec: OrgFieldSpec, raw: string): NormalizedOrgValue;
|
|
28
|
+
/**
|
|
29
|
+
* Map a parsed yaml/json document to API fields for `org apply`. Keys may be
|
|
30
|
+
* CLI names (`long-description`, `hiring`) or API keys (`longDescription`,
|
|
31
|
+
* `isHiring`); unknown keys fail loudly so a typo can't silently drop a field.
|
|
32
|
+
* Lists accept real arrays or comma-separated strings.
|
|
33
|
+
*/
|
|
34
|
+
export declare function parseOrgDocument(doc: unknown): {
|
|
35
|
+
ok: true;
|
|
36
|
+
fields: Record<string, OrgValue>;
|
|
37
|
+
} | {
|
|
38
|
+
ok: false;
|
|
39
|
+
error: string;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Pick the org a view/set/apply targets. `--org <slug>` wins; with no flag,
|
|
43
|
+
* exactly one managed org is the target, zero or several is a typed error the
|
|
44
|
+
* caller renders (JSON gets the code, humans get the message — which always
|
|
45
|
+
* names the way out).
|
|
46
|
+
*/
|
|
47
|
+
export declare function resolveTargetOrg<T extends {
|
|
48
|
+
slug: string;
|
|
49
|
+
}>(organizations: T[], slugFlag: string | undefined): {
|
|
50
|
+
ok: true;
|
|
51
|
+
org: T;
|
|
52
|
+
} | {
|
|
53
|
+
ok: false;
|
|
54
|
+
code: 'no_org' | 'ambiguous_org' | 'not_found';
|
|
55
|
+
error: string;
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=org-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-fields.d.ts","sourceRoot":"","sources":["../src/org-fields.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;AAEzE,MAAM,MAAM,YAAY,GAAG;IACzB,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAA;IACZ,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,YAAY,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,YAAY,EA4BpC,CAAA;AAED,eAAO,MAAM,eAAe,UAAgC,CAAA;AAK5D,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;AAElE,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAShC;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,MAAM,GACV,kBAAkB,CA+BpB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GACzC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;CAAE,GAC9C;IACE,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;CACd,CAqDJ;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACzD,aAAa,EAAE,CAAC,EAAE,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAE1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,CAAC,CAAA;CAAE,GACpB;IACE,EAAE,EAAE,KAAK,CAAA;IACT,IAAI,EAAE,QAAQ,GAAG,eAAe,GAAG,WAAW,CAAA;IAC9C,KAAK,EAAE,MAAM,CAAA;CACd,CA+BJ"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { ensureScheme, FALSE_WORDS, TRUE_WORDS } from './field-normalize.js';
|
|
2
|
+
export const ORG_FIELDS = [
|
|
3
|
+
{ key: 'name', name: 'name', label: 'Name', type: 'text' },
|
|
4
|
+
{ key: 'slug', name: 'slug', label: 'Slug (URL handle)', type: 'text' },
|
|
5
|
+
{ key: 'logoUrl', name: 'logo', label: 'Logo URL', type: 'url' },
|
|
6
|
+
{ key: 'website', name: 'website', label: 'Website', type: 'url' },
|
|
7
|
+
{
|
|
8
|
+
key: 'description',
|
|
9
|
+
name: 'description',
|
|
10
|
+
label: 'Short description',
|
|
11
|
+
type: 'text',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
key: 'longDescription',
|
|
15
|
+
name: 'long-description',
|
|
16
|
+
label: 'Long description',
|
|
17
|
+
type: 'text',
|
|
18
|
+
},
|
|
19
|
+
{ key: 'ycBatch', name: 'yc-batch', label: 'YC batch', type: 'text' },
|
|
20
|
+
{ key: 'ycSlug', name: 'yc-slug', label: 'YC slug', type: 'text' },
|
|
21
|
+
{ key: 'ycUrl', name: 'yc-url', label: 'YC URL', type: 'url' },
|
|
22
|
+
{ key: 'waasUrl', name: 'waas', label: 'WaaS URL', type: 'url' },
|
|
23
|
+
{ key: 'teamSize', name: 'team-size', label: 'Team size', type: 'number' },
|
|
24
|
+
{ key: 'status', name: 'status', label: 'Status', type: 'text' },
|
|
25
|
+
{ key: 'stage', name: 'stage', label: 'Stage', type: 'text' },
|
|
26
|
+
{ key: 'isHiring', name: 'hiring', label: 'Hiring?', type: 'boolean' },
|
|
27
|
+
{ key: 'industries', name: 'industries', label: 'Industries', type: 'list' },
|
|
28
|
+
{ key: 'tags', name: 'tags', label: 'Tags', type: 'list' },
|
|
29
|
+
{ key: 'locations', name: 'locations', label: 'Locations', type: 'list' },
|
|
30
|
+
];
|
|
31
|
+
export const ORG_FIELD_NAMES = ORG_FIELDS.map((f) => f.name);
|
|
32
|
+
// name and slug are notNull columns — a blank must fail loudly, not clear.
|
|
33
|
+
const REQUIRED_KEYS = new Set(['name', 'slug']);
|
|
34
|
+
function splitList(raw) {
|
|
35
|
+
return raw
|
|
36
|
+
.split(',')
|
|
37
|
+
.map((s) => s.trim())
|
|
38
|
+
.filter(Boolean);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Shape one raw CLI string into the value the API expects. Empty clears the
|
|
42
|
+
* field (except name/slug, which are required). URLs get https:// prepended
|
|
43
|
+
* when the scheme is missing; lists split on commas. Real validation (slug
|
|
44
|
+
* pattern, lengths, URL syntax) stays server-side.
|
|
45
|
+
*/
|
|
46
|
+
export function normalizeOrgFieldValue(spec, raw) {
|
|
47
|
+
const trimmed = raw.trim();
|
|
48
|
+
if (!trimmed) {
|
|
49
|
+
if (REQUIRED_KEYS.has(spec.key)) {
|
|
50
|
+
return { ok: false, error: `${spec.name} can't be empty` };
|
|
51
|
+
}
|
|
52
|
+
return { ok: true, value: null };
|
|
53
|
+
}
|
|
54
|
+
if (spec.type === 'boolean') {
|
|
55
|
+
const word = trimmed.toLowerCase();
|
|
56
|
+
if (TRUE_WORDS.has(word))
|
|
57
|
+
return { ok: true, value: true };
|
|
58
|
+
if (FALSE_WORDS.has(word))
|
|
59
|
+
return { ok: true, value: false };
|
|
60
|
+
return { ok: false, error: `${spec.name} must be yes or no` };
|
|
61
|
+
}
|
|
62
|
+
if (spec.type === 'number') {
|
|
63
|
+
if (!/^\d+$/.test(trimmed)) {
|
|
64
|
+
return { ok: false, error: `${spec.name} must be a whole number` };
|
|
65
|
+
}
|
|
66
|
+
return { ok: true, value: Number(trimmed) };
|
|
67
|
+
}
|
|
68
|
+
if (spec.type === 'list') {
|
|
69
|
+
const items = splitList(trimmed);
|
|
70
|
+
return { ok: true, value: items.length ? items : null };
|
|
71
|
+
}
|
|
72
|
+
if (spec.type === 'url')
|
|
73
|
+
return { ok: true, value: ensureScheme(trimmed) };
|
|
74
|
+
return { ok: true, value: trimmed };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Map a parsed yaml/json document to API fields for `org apply`. Keys may be
|
|
78
|
+
* CLI names (`long-description`, `hiring`) or API keys (`longDescription`,
|
|
79
|
+
* `isHiring`); unknown keys fail loudly so a typo can't silently drop a field.
|
|
80
|
+
* Lists accept real arrays or comma-separated strings.
|
|
81
|
+
*/
|
|
82
|
+
export function parseOrgDocument(doc) {
|
|
83
|
+
if (typeof doc !== 'object' || doc === null || Array.isArray(doc)) {
|
|
84
|
+
return { ok: false, error: 'expected a mapping of fields to values' };
|
|
85
|
+
}
|
|
86
|
+
const fields = {};
|
|
87
|
+
for (const [rawKey, rawValue] of Object.entries(doc)) {
|
|
88
|
+
const spec = ORG_FIELDS.find((f) => f.name === rawKey || f.key === rawKey);
|
|
89
|
+
if (!spec) {
|
|
90
|
+
return {
|
|
91
|
+
ok: false,
|
|
92
|
+
error: `unknown field "${rawKey}" (fields: ${ORG_FIELD_NAMES.join(', ')})`,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (rawValue === null) {
|
|
96
|
+
if (REQUIRED_KEYS.has(spec.key)) {
|
|
97
|
+
return { ok: false, error: `${spec.name} can't be empty` };
|
|
98
|
+
}
|
|
99
|
+
fields[spec.key] = null;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (typeof rawValue === 'boolean') {
|
|
103
|
+
if (spec.type !== 'boolean') {
|
|
104
|
+
return { ok: false, error: `${spec.name}: expected a string value` };
|
|
105
|
+
}
|
|
106
|
+
fields[spec.key] = rawValue;
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (Array.isArray(rawValue)) {
|
|
110
|
+
if (spec.type !== 'list') {
|
|
111
|
+
return { ok: false, error: `${spec.name}: expected a single value` };
|
|
112
|
+
}
|
|
113
|
+
const items = rawValue.map((v) => String(v).trim()).filter(Boolean);
|
|
114
|
+
fields[spec.key] = items.length ? items : null;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (typeof rawValue !== 'string' && typeof rawValue !== 'number') {
|
|
118
|
+
return { ok: false, error: `${spec.name}: expected a string value` };
|
|
119
|
+
}
|
|
120
|
+
const normalized = normalizeOrgFieldValue(spec, String(rawValue));
|
|
121
|
+
if (!normalized.ok)
|
|
122
|
+
return normalized;
|
|
123
|
+
fields[spec.key] = normalized.value;
|
|
124
|
+
}
|
|
125
|
+
if (Object.keys(fields).length === 0) {
|
|
126
|
+
return { ok: false, error: 'no fields to apply' };
|
|
127
|
+
}
|
|
128
|
+
return { ok: true, fields };
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Pick the org a view/set/apply targets. `--org <slug>` wins; with no flag,
|
|
132
|
+
* exactly one managed org is the target, zero or several is a typed error the
|
|
133
|
+
* caller renders (JSON gets the code, humans get the message — which always
|
|
134
|
+
* names the way out).
|
|
135
|
+
*/
|
|
136
|
+
export function resolveTargetOrg(organizations, slugFlag) {
|
|
137
|
+
if (slugFlag) {
|
|
138
|
+
const found = organizations.find((o) => o.slug === slugFlag);
|
|
139
|
+
if (found)
|
|
140
|
+
return { ok: true, org: found };
|
|
141
|
+
const yours = organizations.map((o) => o.slug).join(', ');
|
|
142
|
+
return {
|
|
143
|
+
ok: false,
|
|
144
|
+
code: 'not_found',
|
|
145
|
+
error: organizations.length
|
|
146
|
+
? `you don't manage "${slugFlag}" (you manage: ${yours})`
|
|
147
|
+
: `you don't manage "${slugFlag}" — claim or create it first`,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
if (organizations.length === 0) {
|
|
151
|
+
return {
|
|
152
|
+
ok: false,
|
|
153
|
+
code: 'no_org',
|
|
154
|
+
error: "you don't manage a company yet — run `hacklab org claim <slug>` or `hacklab org create`",
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
if (organizations.length > 1) {
|
|
158
|
+
const slugs = organizations.map((o) => o.slug).join(', ');
|
|
159
|
+
return {
|
|
160
|
+
ok: false,
|
|
161
|
+
code: 'ambiguous_org',
|
|
162
|
+
error: `you manage ${organizations.length} companies — pass --org <slug> (${slugs})`,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
return { ok: true, org: organizations[0] };
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=org-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-fields.js","sourceRoot":"","sources":["../src/org-fields.ts"],"names":[],"mappings":"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"}
|
package/dist/posthog.d.ts
CHANGED
|
@@ -1,9 +1,38 @@
|
|
|
1
|
-
import { PostHog } from 'posthog-node';
|
|
2
|
-
export declare const posthog: PostHog;
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Telemetry is opt-OUT. It's off when the user sets `HACKLAB_NO_TELEMETRY`
|
|
3
|
+
* (mirrors `HACKLAB_NO_UPDATE_CHECK`) or the cross-tool `DO_NOT_TRACK` standard
|
|
4
|
+
* (https://consoledonottrack.com). Checked at every entry point, so a disabled
|
|
5
|
+
* CLI never constructs a client, phones home, or installs exception handlers.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isTelemetryDisabled(): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Capture an event and flush it. Falls back to the anonymous device id when no
|
|
10
|
+
* handle is given, so pre-auth usage is still counted (and later stitched onto
|
|
11
|
+
* the user via `identifyUser`). Fire-and-forget: gated on opt-out, wrapped so it
|
|
12
|
+
* can never slow down or break the command that called it.
|
|
7
13
|
*/
|
|
8
14
|
export declare function captureEvent(distinctId: string | undefined, event: string, properties?: Record<string, unknown>): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Identify the logged-in user and merge any anonymous pre-login history onto
|
|
17
|
+
* them. `properties` is passed straight through (callers set `$set` /
|
|
18
|
+
* `$set_once`). Opt-out gated and fully wrapped.
|
|
19
|
+
*/
|
|
20
|
+
export declare function identifyUser(handle: string, properties: Record<string, unknown>): Promise<void>;
|
|
21
|
+
/** Report an unhandled error to PostHog. Opt-out gated and wrapped. */
|
|
22
|
+
export declare function captureException(error: unknown, distinctId?: string): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Final drain before the process exits. No-op if telemetry never initialized.
|
|
25
|
+
* Uses flush(), not shutdown(): shutdown() routes a failed flush to a hardcoded
|
|
26
|
+
* console.error (a network stack trace in the user's terminal), whereas flush()
|
|
27
|
+
* rejects into our own catch and stays silent. There are no background timers to
|
|
28
|
+
* clear (flushInterval is 0), so flush() is a complete drain here.
|
|
29
|
+
*/
|
|
30
|
+
export declare function shutdownTelemetry(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* One-time, one-line notice that the CLI collects anonymous usage, with the
|
|
33
|
+
* opt-out. Interactive only (never in pipes / CI / the quiet daily run), shown
|
|
34
|
+
* once per machine (flagged in telemetry.json). Mirrors the update-check nudge:
|
|
35
|
+
* stderr, TTY-gated, and wrapped so it can never break or delay a command.
|
|
36
|
+
*/
|
|
37
|
+
export declare function maybePrintTelemetryNotice(): Promise<void>;
|
|
9
38
|
//# sourceMappingURL=posthog.d.ts.map
|
package/dist/posthog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthog.d.ts","sourceRoot":"","sources":["../src/posthog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"posthog.d.ts","sourceRoot":"","sources":["../src/posthog.ts"],"names":[],"mappings":"AAkCA;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAI7C;AAgGD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,uEAAuE;AACvE,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,OAAO,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAOvD;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB/D"}
|