hacklab 0.4.2 → 0.5.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 CHANGED
@@ -48,6 +48,9 @@ scan local AI usage → see your rank → pick a username → sign in with GitHu
48
48
  - `hacklab scan` — build your full profile (skills, repos, blog).
49
49
  - `hacklab config <key> <value>` — set config (`cursor-api-key`, `cursor-email`).
50
50
  - `hacklab brag [path]` — sync a `.hacklab/project.yaml` to your profile.
51
+ - `hacklab org` — edit the profile of an organization you've claimed. Pick a
52
+ field, type the new value, and it saves as you go. Only organizations you've
53
+ claimed are editable.
51
54
  - `hacklab --version` / `hacklab --help`.
52
55
 
53
56
  ## Choosing a backend
@@ -0,0 +1,5 @@
1
+ import { type Session } from '../session.js';
2
+ export declare function baseUrl(session?: Session | null): string;
3
+ export declare function stripControl(s: string): string;
4
+ export declare function chat(args: string[]): Promise<void>;
5
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,OAAO,EAAE,MAAM,eAAe,CAAA;AAyCpE,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAGxD;AAyCD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9C;AAiUD,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,iBAyBxC"}
@@ -0,0 +1,359 @@
1
+ import readline from 'node:readline';
2
+ import { getAppUrl, loadSession } from '../session.js';
3
+ import { bold, dim, error, green, info, red, success } from '../ui.js';
4
+ // The chat command is CLI-first: every subcommand takes --json so an AI agent
5
+ // can drive the channel and DMs programmatically, while the default output is a
6
+ // human-readable terminal view. Thin wrappers over the /api/chat/* routes.
7
+ const CHANNEL_BASE = '/api/chat/channel/main';
8
+ function printJson(data) {
9
+ console.log(JSON.stringify(data, null, 2));
10
+ }
11
+ // Backend precedence: an explicit override (HACKLAB_APP_URL, set by --env) wins
12
+ // so `--env staging` actually switches backends; otherwise fall back to the
13
+ // backend you logged into (session.appUrl), then the production default. Note
14
+ // the session token is per-backend, so pointing --env at an env you haven't
15
+ // logged into will 401 until you `hacklab login --env <that>`.
16
+ export function baseUrl(session) {
17
+ const override = process.env.HACKLAB_APP_URL?.replace(/\/$/, '');
18
+ return override ?? session?.appUrl ?? getAppUrl();
19
+ }
20
+ async function requireSession() {
21
+ const session = await loadSession();
22
+ if (!session) {
23
+ error('not logged in');
24
+ info(`run ${dim('hacklab login')} first`);
25
+ process.exit(1);
26
+ }
27
+ return session;
28
+ }
29
+ async function readError(res) {
30
+ const data = (await res.json().catch(() => null));
31
+ return data?.error ?? `request failed (${res.status})`;
32
+ }
33
+ function flagValue(args, name) {
34
+ const i = args.indexOf(name);
35
+ if (i !== -1 && args[i + 1])
36
+ return args[i + 1];
37
+ const eq = args.find((a) => a.startsWith(`${name}=`));
38
+ return eq ? eq.slice(name.length + 1) : undefined;
39
+ }
40
+ function clock(iso) {
41
+ const d = new Date(iso);
42
+ const hh = String(d.getHours()).padStart(2, '0');
43
+ const mm = String(d.getMinutes()).padStart(2, '0');
44
+ return `${hh}:${mm}`;
45
+ }
46
+ // Strip C0 control characters + DEL from untrusted message content before
47
+ // printing it to the terminal. Without this, a hacker could embed ANSI escape
48
+ // sequences in a message to clear/garble or hijack any viewer's terminal.
49
+ export function stripControl(s) {
50
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: intentionally matching control chars to remove them
51
+ return s.replace(/[\x00-\x1f\x7f]/g, '');
52
+ }
53
+ function formatLine(m) {
54
+ const lvl = m.senderLevel != null ? dim(` lv${m.senderLevel}`) : '';
55
+ return `${dim(clock(m.createdAt))} ${bold(m.senderHandle)}${lvl}: ${stripControl(m.content)}`;
56
+ }
57
+ // API returns newest-first; print oldest-first like a chat log.
58
+ function renderMessages(messages) {
59
+ if (messages.length === 0) {
60
+ console.log(dim('(no messages yet)'));
61
+ return;
62
+ }
63
+ for (const m of [...messages].reverse()) {
64
+ console.log(formatLine(m));
65
+ }
66
+ }
67
+ async function chatTail(json) {
68
+ // Public endpoint — no auth required (the whole point of the cached tail), but
69
+ // still resolve the backend the same way so --env and your logged-in env work.
70
+ const session = await loadSession();
71
+ const res = await fetch(`${baseUrl(session)}${CHANNEL_BASE}/tail`);
72
+ if (!res.ok) {
73
+ error(await readError(res));
74
+ process.exit(1);
75
+ }
76
+ const data = (await res.json());
77
+ if (json) {
78
+ printJson(data);
79
+ return;
80
+ }
81
+ renderMessages(data.messages);
82
+ }
83
+ async function chatPost(words, json) {
84
+ const content = words.join(' ').trim();
85
+ if (!content) {
86
+ error('usage: hacklab chat post <message>');
87
+ process.exit(1);
88
+ }
89
+ const session = await requireSession();
90
+ const res = await fetch(`${baseUrl(session)}${CHANNEL_BASE}`, {
91
+ method: 'POST',
92
+ headers: {
93
+ 'Content-Type': 'application/json',
94
+ Authorization: `Bearer ${session.token}`,
95
+ },
96
+ body: JSON.stringify({ content }),
97
+ });
98
+ if (!res.ok) {
99
+ error(await readError(res));
100
+ process.exit(1);
101
+ }
102
+ const data = await res.json();
103
+ if (json) {
104
+ printJson(data);
105
+ return;
106
+ }
107
+ success('posted.');
108
+ }
109
+ async function chatHistory(args, json) {
110
+ const before = flagValue(args, '--before');
111
+ const session = await requireSession();
112
+ const url = new URL(`${baseUrl(session)}${CHANNEL_BASE}/history`);
113
+ if (before)
114
+ url.searchParams.set('before', before);
115
+ const res = await fetch(url, {
116
+ headers: { Authorization: `Bearer ${session.token}` },
117
+ });
118
+ if (!res.ok) {
119
+ error(await readError(res));
120
+ process.exit(1);
121
+ }
122
+ const data = (await res.json());
123
+ if (json) {
124
+ printJson(data);
125
+ return;
126
+ }
127
+ renderMessages(data.messages);
128
+ if (data.nextCursor) {
129
+ console.log(dim(`\nolder → hacklab chat history --before ${data.nextCursor}`));
130
+ }
131
+ }
132
+ async function chatDms(json) {
133
+ const session = await requireSession();
134
+ const res = await fetch(`${baseUrl(session)}/api/chat/dms`, {
135
+ headers: { Authorization: `Bearer ${session.token}` },
136
+ });
137
+ if (!res.ok) {
138
+ error(await readError(res));
139
+ process.exit(1);
140
+ }
141
+ const data = (await res.json());
142
+ if (json) {
143
+ printJson(data);
144
+ return;
145
+ }
146
+ if (data.conversations.length === 0) {
147
+ console.log(dim('(no conversations yet)'));
148
+ return;
149
+ }
150
+ for (const c of data.conversations) {
151
+ const unread = c.unread_count > 0 ? ` ${green(`(${c.unread_count} new)`)}` : '';
152
+ const preview = c.last_message_content
153
+ ? dim(` — ${c.last_message_content}`)
154
+ : '';
155
+ console.log(`${bold(`@${c.partner_handle}`)}${unread}${preview}`);
156
+ }
157
+ }
158
+ async function chatDm(args, json) {
159
+ const handle = args[0];
160
+ if (!handle) {
161
+ error('usage: hacklab chat dm <handle> [message]');
162
+ process.exit(1);
163
+ }
164
+ const message = args.slice(1).join(' ').trim();
165
+ const session = await requireSession();
166
+ const base = `${baseUrl(session)}/api/chat/dm/${encodeURIComponent(handle)}`;
167
+ if (message) {
168
+ const res = await fetch(base, {
169
+ method: 'POST',
170
+ headers: {
171
+ 'Content-Type': 'application/json',
172
+ Authorization: `Bearer ${session.token}`,
173
+ },
174
+ body: JSON.stringify({ content: message }),
175
+ });
176
+ if (!res.ok) {
177
+ error(await readError(res));
178
+ process.exit(1);
179
+ }
180
+ const data = await res.json();
181
+ if (json) {
182
+ printJson(data);
183
+ return;
184
+ }
185
+ success(`sent to @${handle}.`);
186
+ return;
187
+ }
188
+ const res = await fetch(base, {
189
+ headers: { Authorization: `Bearer ${session.token}` },
190
+ });
191
+ if (!res.ok) {
192
+ error(await readError(res));
193
+ process.exit(1);
194
+ }
195
+ const data = (await res.json());
196
+ if (json) {
197
+ printJson(data);
198
+ return;
199
+ }
200
+ renderMessages(data.messages);
201
+ }
202
+ async function chatFlag(args, json) {
203
+ const targetId = args[0];
204
+ const reason = args[1];
205
+ if (!targetId || !reason) {
206
+ error('usage: hacklab chat flag <messageId> <off_topic|personal_attack|spam|other>');
207
+ process.exit(1);
208
+ }
209
+ const session = await requireSession();
210
+ const res = await fetch(`${baseUrl(session)}/api/chat/flag`, {
211
+ method: 'POST',
212
+ headers: {
213
+ 'Content-Type': 'application/json',
214
+ Authorization: `Bearer ${session.token}`,
215
+ },
216
+ body: JSON.stringify({ targetId, reason }),
217
+ });
218
+ if (!res.ok) {
219
+ error(await readError(res));
220
+ process.exit(1);
221
+ }
222
+ const data = await res.json();
223
+ if (json) {
224
+ printJson(data);
225
+ return;
226
+ }
227
+ success('flagged for review.');
228
+ }
229
+ // Interactive live channel: short-poll the public tail and print new messages
230
+ // above a readline prompt; press enter to post. CLI-first design means this is a
231
+ // thin loop over the same endpoints the agent subcommands use.
232
+ async function chatLive() {
233
+ const session = await requireSession();
234
+ const base = baseUrl(session);
235
+ const seen = new Set();
236
+ let started = false;
237
+ const rl = readline.createInterface({
238
+ input: process.stdin,
239
+ output: process.stdout,
240
+ prompt: dim('> '),
241
+ });
242
+ // Print a line above the prompt without clobbering whatever the user is
243
+ // mid-typing: clear the current line, write the message, then redraw the
244
+ // prompt + the in-progress input buffer.
245
+ function printAbove(text) {
246
+ const pending = rl.line;
247
+ readline.cursorTo(process.stdout, 0);
248
+ readline.clearLine(process.stdout, 0);
249
+ process.stdout.write(`${text}\n`);
250
+ process.stdout.write(rl.getPrompt() + pending);
251
+ }
252
+ async function poll() {
253
+ try {
254
+ const res = await fetch(`${base}${CHANNEL_BASE}/tail`);
255
+ if (!res.ok)
256
+ return;
257
+ const data = (await res.json());
258
+ const ordered = [...data.messages].reverse();
259
+ if (!started) {
260
+ for (const m of ordered) {
261
+ seen.add(m.id);
262
+ console.log(formatLine(m));
263
+ }
264
+ started = true;
265
+ rl.prompt();
266
+ return;
267
+ }
268
+ for (const m of ordered) {
269
+ if (seen.has(m.id))
270
+ continue;
271
+ seen.add(m.id);
272
+ printAbove(formatLine(m));
273
+ }
274
+ }
275
+ catch {
276
+ // Transient network error — keep polling silently.
277
+ }
278
+ }
279
+ console.log(dim('hacklab channel — live. type a message + enter to post, ctrl-c to quit.'));
280
+ await poll();
281
+ const timer = setInterval(poll, 1500);
282
+ rl.on('line', async (input) => {
283
+ const content = input.trim();
284
+ if (!content) {
285
+ rl.prompt();
286
+ return;
287
+ }
288
+ try {
289
+ const res = await fetch(`${base}${CHANNEL_BASE}`, {
290
+ method: 'POST',
291
+ headers: {
292
+ 'Content-Type': 'application/json',
293
+ Authorization: `Bearer ${session.token}`,
294
+ },
295
+ body: JSON.stringify({ content }),
296
+ });
297
+ if (!res.ok) {
298
+ printAbove(red(`✗ ${await readError(res)}`));
299
+ }
300
+ else {
301
+ const data = (await res.json());
302
+ if (data.message?.id) {
303
+ seen.add(data.message.id);
304
+ printAbove(formatLine(data.message));
305
+ }
306
+ }
307
+ }
308
+ catch {
309
+ printAbove(red('✗ send failed (network error)'));
310
+ }
311
+ rl.prompt();
312
+ });
313
+ rl.on('SIGINT', () => {
314
+ clearInterval(timer);
315
+ rl.close();
316
+ process.stdout.write('\n');
317
+ process.exit(0);
318
+ });
319
+ }
320
+ function printChatHelp() {
321
+ console.log(bold('hacklab chat'));
322
+ console.log('');
323
+ console.log(` ${dim('live')} interactive channel (type to post)`);
324
+ console.log(` ${dim('tail')} read the latest channel messages`);
325
+ console.log(` ${dim('post <message>')} post to the channel`);
326
+ console.log(` ${dim('history [--before C]')} older channel messages`);
327
+ console.log(` ${dim('dms')} list your direct-message threads`);
328
+ console.log(` ${dim('dm <handle> [msg]')} read a DM thread, or send if msg given`);
329
+ console.log(` ${dim('flag <id> <reason>')} report a message to moderation`);
330
+ console.log('');
331
+ console.log(` ${dim('--json')} machine-readable output (any subcommand)`);
332
+ }
333
+ export async function chat(args) {
334
+ const json = args.includes('--json');
335
+ const rest = args.filter((a) => a !== '--json');
336
+ const sub = rest[0];
337
+ const subArgs = rest.slice(1);
338
+ switch (sub) {
339
+ case 'live':
340
+ return chatLive();
341
+ case 'tail':
342
+ return chatTail(json);
343
+ case 'post':
344
+ return chatPost(subArgs, json);
345
+ case 'history':
346
+ return chatHistory(subArgs, json);
347
+ case 'dms':
348
+ return chatDms(json);
349
+ case 'dm':
350
+ return chatDm(subArgs, json);
351
+ case 'flag':
352
+ return chatFlag(subArgs, json);
353
+ default:
354
+ printChatHelp();
355
+ if (sub)
356
+ process.exit(1);
357
+ }
358
+ }
359
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function company(): Promise<void>;
2
+ //# sourceMappingURL=company.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"company.d.ts","sourceRoot":"","sources":["../../src/commands/company.ts"],"names":[],"mappings":"AAkJA,wBAAsB,OAAO,kBAgG5B"}
@@ -0,0 +1,214 @@
1
+ import * as clack from '@clack/prompts';
2
+ import { loadSession } from '../session.js';
3
+ import { bold, dim, error, info, success } from '../ui.js';
4
+ const FIELDS = [
5
+ { key: 'name', label: 'Name', type: 'text' },
6
+ { key: 'slug', label: 'Slug (URL handle)', type: 'text' },
7
+ { key: 'logoUrl', label: 'Logo URL', type: 'url' },
8
+ { key: 'website', label: 'Website', type: 'url' },
9
+ { key: 'description', label: 'Short description', type: 'text' },
10
+ { key: 'longDescription', label: 'Long description', type: 'text' },
11
+ { key: 'ycBatch', label: 'YC batch', type: 'text' },
12
+ { key: 'ycSlug', label: 'YC slug', type: 'text' },
13
+ { key: 'ycUrl', label: 'YC URL', type: 'url' },
14
+ { key: 'waasUrl', label: 'WaaS URL', type: 'url' },
15
+ { key: 'teamSize', label: 'Team size', type: 'number' },
16
+ { key: 'status', label: 'Status', type: 'text' },
17
+ { key: 'stage', label: 'Stage', type: 'text' },
18
+ { key: 'isHiring', label: 'Hiring?', type: 'boolean' },
19
+ { key: 'industries', label: 'Industries', type: 'list' },
20
+ { key: 'tags', label: 'Tags', type: 'list' },
21
+ { key: 'locations', label: 'Locations', type: 'list' },
22
+ ];
23
+ // Short, human label for the current value (shown as a select-menu hint).
24
+ function displayValue(spec, value) {
25
+ if (value == null || value === '')
26
+ return '(empty)';
27
+ if (spec.type === 'boolean')
28
+ return value ? 'yes' : 'no';
29
+ if (spec.type === 'list') {
30
+ return Array.isArray(value) ? value.join(', ') || '(empty)' : String(value);
31
+ }
32
+ const s = String(value);
33
+ return s.length > 48 ? `${s.slice(0, 47)}…` : s;
34
+ }
35
+ async function fetchCompanies(session) {
36
+ const res = await fetch(`${session.appUrl}/api/cli/company`, {
37
+ headers: { Authorization: `Bearer ${session.token}` },
38
+ });
39
+ const data = await res.json().catch(() => null);
40
+ if (!res.ok) {
41
+ throw new Error(data?.error ?? `failed to load companies (${res.status})`);
42
+ }
43
+ return (data?.companies ?? []);
44
+ }
45
+ async function patchCompany(session, orgId, fields) {
46
+ const res = await fetch(`${session.appUrl}/api/cli/company`, {
47
+ method: 'PATCH',
48
+ headers: {
49
+ 'Content-Type': 'application/json',
50
+ Authorization: `Bearer ${session.token}`,
51
+ },
52
+ body: JSON.stringify({ orgId, fields }),
53
+ });
54
+ const data = await res.json().catch(() => null);
55
+ if (!res.ok) {
56
+ throw new Error(data?.error ?? `update failed (${res.status})`);
57
+ }
58
+ return data;
59
+ }
60
+ // Prompt for one field, prefilled with the current value. Returns the new
61
+ // value to send, or a clack cancel symbol.
62
+ async function promptField(spec, current) {
63
+ if (spec.type === 'boolean') {
64
+ return clack.confirm({
65
+ message: spec.label,
66
+ initialValue: Boolean(current),
67
+ });
68
+ }
69
+ if (spec.type === 'list') {
70
+ const initial = Array.isArray(current) ? current.join(', ') : '';
71
+ const value = await clack.text({
72
+ message: `${spec.label} ${dim('(comma-separated, blank to clear)')}`,
73
+ initialValue: initial,
74
+ });
75
+ if (clack.isCancel(value))
76
+ return value;
77
+ const items = value
78
+ .split(',')
79
+ .map((s) => s.trim())
80
+ .filter(Boolean);
81
+ return items.length ? items : null;
82
+ }
83
+ if (spec.type === 'number') {
84
+ const value = await clack.text({
85
+ message: `${spec.label} ${dim('(blank to clear)')}`,
86
+ initialValue: current == null ? '' : String(current),
87
+ validate: (v) => {
88
+ const t = (v ?? '').trim();
89
+ return !t || /^\d+$/.test(t) ? undefined : 'must be a whole number';
90
+ },
91
+ });
92
+ if (clack.isCancel(value))
93
+ return value;
94
+ return value.trim() ? Number(value.trim()) : null;
95
+ }
96
+ const value = await clack.text({
97
+ message: spec.type === 'url'
98
+ ? `${spec.label} ${dim('(blank to clear)')}`
99
+ : spec.label,
100
+ initialValue: current == null ? '' : String(current),
101
+ validate: spec.type === 'url'
102
+ ? (v) => {
103
+ const t = (v ?? '').trim();
104
+ if (!t)
105
+ return undefined;
106
+ try {
107
+ new URL(t);
108
+ return undefined;
109
+ }
110
+ catch {
111
+ return 'must be a valid URL (include https://)';
112
+ }
113
+ }
114
+ : undefined,
115
+ });
116
+ if (clack.isCancel(value))
117
+ return value;
118
+ const trimmed = value.trim();
119
+ // name/slug are required (notNull): a blank keeps the current value.
120
+ if ((spec.key === 'name' || spec.key === 'slug') && !trimmed)
121
+ return current;
122
+ return trimmed ? trimmed : null;
123
+ }
124
+ export async function company() {
125
+ const session = await loadSession();
126
+ if (!session) {
127
+ error('not logged in');
128
+ info(`run ${dim('hacklab login')} first`);
129
+ process.exit(1);
130
+ }
131
+ clack.intro(bold('hacklab company'));
132
+ let companies;
133
+ try {
134
+ companies = await fetchCompanies(session);
135
+ }
136
+ catch (err) {
137
+ clack.cancel(err instanceof Error ? err.message : String(err));
138
+ process.exit(1);
139
+ }
140
+ if (companies.length === 0) {
141
+ clack.cancel(`you don't manage a company yet — claim one at ${session.appUrl} first.`);
142
+ process.exit(1);
143
+ }
144
+ let target = companies[0];
145
+ if (companies.length > 1) {
146
+ const picked = await clack.select({
147
+ message: 'which company?',
148
+ options: companies.map((c) => ({
149
+ value: c.id,
150
+ label: `${c.name} ${dim(`/c/${c.slug}`)}`,
151
+ })),
152
+ });
153
+ if (clack.isCancel(picked)) {
154
+ clack.outro(dim('cancelled.'));
155
+ return;
156
+ }
157
+ target = companies.find((c) => c.id === picked) ?? target;
158
+ }
159
+ // Autosave: editing a field writes it immediately (mirrors the web settings'
160
+ // "saves instantly, no Save button"). Pick a field, set its value, it saves,
161
+ // and the menu shows the saved value. Leave any time with "done" or Esc —
162
+ // nothing is pending, so nothing is lost.
163
+ const DONE = '__done__';
164
+ let savedCount = 0;
165
+ while (true) {
166
+ const choice = await clack.select({
167
+ message: `editing ${bold(target.name)} ${dim('(saves as you go)')}`,
168
+ options: [
169
+ ...FIELDS.map((f) => ({
170
+ value: f.key,
171
+ label: f.label,
172
+ hint: displayValue(f, target[f.key]),
173
+ })),
174
+ { value: DONE, label: '← done' },
175
+ ],
176
+ });
177
+ // Esc / Ctrl+C at the menu, or "done": leave. Every edit is already saved.
178
+ if (clack.isCancel(choice) || choice === DONE)
179
+ break;
180
+ const spec = FIELDS.find((f) => f.key === choice);
181
+ if (!spec)
182
+ continue;
183
+ const next = await promptField(spec, target[spec.key]);
184
+ // Cancelling a single field drops just that edit and returns to the menu.
185
+ if (clack.isCancel(next))
186
+ continue;
187
+ const label = spec.label.toLowerCase();
188
+ const prevSlug = target.slug;
189
+ const spin = clack.spinner();
190
+ spin.start(`saving ${label}`);
191
+ try {
192
+ const updated = await patchCompany(session, target.id, {
193
+ [spec.key]: next,
194
+ });
195
+ target = { ...target, ...updated };
196
+ savedCount++;
197
+ spin.stop(`saved ${label}`);
198
+ if (spec.key === 'slug' && target.slug !== prevSlug) {
199
+ clack.log.warn(`old links to /c/${prevSlug} will no longer resolve`);
200
+ }
201
+ }
202
+ catch (err) {
203
+ spin.stop(`could not save ${label}`);
204
+ error(err instanceof Error ? err.message : String(err));
205
+ // Stay in the loop so they can retry or edit something else.
206
+ }
207
+ }
208
+ if (savedCount > 0) {
209
+ success(`saved ${savedCount} change${savedCount === 1 ? '' : 's'} to ${bold(target.name)}`);
210
+ info(`${session.appUrl}/c/${target.slug}`);
211
+ }
212
+ clack.outro(dim('done.'));
213
+ }
214
+ //# sourceMappingURL=company.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"company.js","sourceRoot":"","sources":["../../src/commands/company.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function org(): Promise<void>;
2
+ //# sourceMappingURL=org.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/commands/org.ts"],"names":[],"mappings":"AAoJA,wBAAsB,GAAG,kBAgGxB"}