@productbrain/cli 0.1.0-beta.9533 → 0.1.0-beta.9534

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.
@@ -0,0 +1,6 @@
1
+ export interface PeopleInviteOptions {
2
+ email: string;
3
+ name?: string;
4
+ }
5
+ export declare function runPeopleInvite(personId: string | undefined, options: PeopleInviteOptions): Promise<void>;
6
+ //# sourceMappingURL=people.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../src/commands/people.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAID,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAa/G"}
@@ -0,0 +1,22 @@
1
+ import { getConfigOrGuide } from '../lib/config.js';
2
+ import { kernelCallWithSession } from '../lib/client.js';
3
+ import { CLIError, ErrorCode } from '../lib/errors.js';
4
+ import { formatInviteSentence } from '../lib/seatSentence.js';
5
+ import { sanitizeSingleLineField } from '../lib/strip.js';
6
+ import { runOrganisationWrite } from './organisationWrite.js';
7
+ export async function runPeopleInvite(personId, options) {
8
+ // A placeholder keeps its own name; a new person needs one. Refused before any network call.
9
+ if ((personId === undefined) === (options.name === undefined)) {
10
+ throw new CLIError(personId === undefined ? 'Say who to invite: a placeholder\'s person id, or --name for a new person.' : 'A placeholder keeps its own name; drop --name.', {
11
+ code: ErrorCode.VALIDATION_FAILED, category: 'validation',
12
+ guidance: 'Usage: pb people invite [person-id] --email <email> [--name <name>]',
13
+ });
14
+ }
15
+ const config = await getConfigOrGuide(() => runPeopleInvite(personId, options));
16
+ if (!config)
17
+ return;
18
+ await runOrganisationWrite((context) => kernelCallWithSession('people.invite', {
19
+ email: options.email, targetPersonId: personId, displayName: options.name, sessionId: context.sessionId,
20
+ }), (result) => formatInviteSentence({ ...result, personId: String(result.personId) }, sanitizeSingleLineField));
21
+ }
22
+ //# sourceMappingURL=people.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.js","sourceRoot":"","sources":["../../src/commands/people.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAS9D,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAA4B,EAAE,OAA4B;IAC/F,6FAA6F;IAC7F,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,4EAA4E,CAAC,CAAC,CAAC,gDAAgD,EAAE;YAC5K,IAAI,EAAE,SAAS,CAAC,iBAAiB,EAAE,QAAQ,EAAE,YAAY;YACzD,QAAQ,EAAE,qEAAqE;SAC/E,CAAC,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,oBAAoB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAe,eAAe,EAAE;QAC5F,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS;KACvG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAC;AAClH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=people.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.test.d.ts","sourceRoot":"","sources":["../../src/commands/people.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * TASK-637 (WP-808, DEC-1953, DEC-1954): `pb people invite` calls the gateway's `people.invite`, the
3
+ * same kernel invite core as the web and the MCP role tool's `invite`, and prints the shared sentence.
4
+ * The kernel's rules (who may invite, the in-place patch, the refusals) are proven in
5
+ * convex/people.invite.inPlace.test.ts; this file proves the wire shape and the reply.
6
+ */
7
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
8
+ const { getConfigOrGuide, kernelCallWithSession, isJsonMode, readSession } = vi.hoisted(() => ({
9
+ getConfigOrGuide: vi.fn(),
10
+ kernelCallWithSession: vi.fn(),
11
+ isJsonMode: vi.fn(() => false),
12
+ readSession: vi.fn(),
13
+ }));
14
+ vi.mock('../lib/config.js', () => ({ getConfigOrGuide }));
15
+ vi.mock('../lib/client.js', () => ({ kernelCallWithSession }));
16
+ vi.mock('../lib/runner.js', () => ({ isJsonMode }));
17
+ vi.mock('../lib/session.js', () => ({ readSession }));
18
+ vi.mock('../lib/workspaceNotice.js', () => ({ emitEffectiveTenantNotice: vi.fn(async () => undefined) }));
19
+ import { runPeopleInvite } from './people.js';
20
+ import { ErrorCode } from '../lib/errors.js';
21
+ describe('pb people invite', () => {
22
+ const invited = { outcome: 'applied', personId: 'p1', person: 'Jan Jansen', email: 'jan@example.test', status: 'invited', inPlace: true };
23
+ let printed;
24
+ beforeEach(() => {
25
+ vi.clearAllMocks();
26
+ getConfigOrGuide.mockResolvedValue({ apiKey: 'pb_sk_test', siteUrl: 'https://example.test' });
27
+ readSession.mockReturnValue({ sessionId: 'sess-1' });
28
+ isJsonMode.mockReturnValue(false);
29
+ printed = [];
30
+ vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => { printed.push(String(chunk)); return true; });
31
+ });
32
+ it('a placeholder id calls people.invite with the session and says they keep their roles', async () => {
33
+ kernelCallWithSession.mockResolvedValue(invited);
34
+ await runPeopleInvite('p1', { email: 'jan@example.test' });
35
+ expect(kernelCallWithSession).toHaveBeenCalledWith('people.invite', {
36
+ email: 'jan@example.test', targetPersonId: 'p1', displayName: undefined, sessionId: 'sess-1',
37
+ });
38
+ expect(printed.join('')).toBe('Invited Jan Jansen [p1] at jan@example.test; they keep every role they already hold.\n');
39
+ });
40
+ it('--name invites a new person', async () => {
41
+ kernelCallWithSession.mockResolvedValue({ ...invited, person: 'New Person', personId: 'p2', inPlace: false });
42
+ await runPeopleInvite(undefined, { email: 'new@example.test', name: 'New Person' });
43
+ expect(kernelCallWithSession).toHaveBeenCalledWith('people.invite', expect.objectContaining({ targetPersonId: undefined, displayName: 'New Person' }));
44
+ expect(printed.join('')).toBe('Invited New Person [p2] at jan@example.test as a new person.\n');
45
+ });
46
+ it('refuses both or neither of a person id and --name before any call', async () => {
47
+ await expect(runPeopleInvite('p1', { email: 'jan@example.test', name: 'Jan' })).rejects.toMatchObject({ code: ErrorCode.VALIDATION_FAILED });
48
+ await expect(runPeopleInvite(undefined, { email: 'jan@example.test' })).rejects.toThrow('Say who to invite');
49
+ expect(kernelCallWithSession).not.toHaveBeenCalled();
50
+ });
51
+ it('the kernel\'s one-sentence refusal reaches the person unchanged', async () => {
52
+ kernelCallWithSession.mockRejectedValue(new Error('Jan Jansen is already invited; resend their invite instead.'));
53
+ await expect(runPeopleInvite('p1', { email: 'jan@example.test' })).rejects.toThrow('Jan Jansen is already invited; resend their invite instead.');
54
+ });
55
+ it('refuses without an active session, before any call', async () => {
56
+ readSession.mockReturnValue(null);
57
+ await expect(runPeopleInvite('p1', { email: 'jan@example.test' })).rejects.toThrow('No active session');
58
+ expect(kernelCallWithSession).not.toHaveBeenCalled();
59
+ });
60
+ });
61
+ //# sourceMappingURL=people.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.test.js","sourceRoot":"","sources":["../../src/commands/people.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"routeLatencyBudget.generated.d.ts","sourceRoot":"","sources":["../../src/generated/routeLatencyBudget.generated.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/D,qEAAqE;AACrE,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC;;;;CAoBnC,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAG5C,CAAC;AAqLF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAGzE,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAE1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CASjE"}
1
+ {"version":3,"file":"routeLatencyBudget.generated.d.ts","sourceRoot":"","sources":["../../src/generated/routeLatencyBudget.generated.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/D,qEAAqE;AACrE,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC;;;;CAoBnC,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAG5C,CAAC;AAsLF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAGzE,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAE1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CASjE"}
@@ -236,6 +236,7 @@ const ROUTE_TYPE_ENTRIES = {
236
236
  "organisation.seatInRole": "mutation",
237
237
  "organisation.unseatFromRole": "mutation",
238
238
  "apiKeys.revokeCallingKey": "mutation",
239
+ "people.invite": "mutation",
239
240
  };
240
241
  /**
241
242
  * NULL-PROTOTYPE, deliberately (PR #533 review, Codex P2).
@@ -1 +1 @@
1
- {"version":3,"file":"routeLatencyBudget.generated.js","sourceRoot":"","sources":["../../src/generated/routeLatencyBudget.generated.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routeLatencyBudget.generated.js","sourceRoot":"","sources":["../../src/generated/routeLatencyBudget.generated.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@
3
3
  * (`pb role seat` / `pb role unseat`) and the MCP `role` tool alike. Both doors call the same
4
4
  * kernel routes (`organisation.seatInRole` / `organisation.unseatFromRole`) and render this
5
5
  * sentence from the result, so the two replies cannot drift (RULE-657: one place decides it).
6
+ * The invite reply (`pb people invite`, the MCP role tool's `invite`; TASK-637) lives here too: one organisation
7
+ * reply file, one generated copy per connector.
6
8
  *
7
9
  * Pure, no I/O, zero imports: copied into each connector by scripts/generate-mcp-embedded-copies.mjs.
8
10
  * Field sanitization is the caller's (each connector's own `sanitizeSingleLineField`), passed in
@@ -28,4 +30,13 @@ export interface SeatReply {
28
30
  };
29
31
  }
30
32
  export declare function formatSeatSentence(action: 'seat' | 'unseat', reply: SeatReply, clean: (value: string) => string): string;
33
+ /** TASK-637 (DEC-1953): the one sentence `pb people invite` and the MCP role tool's `invite` reply with.
34
+ * `inPlace` is a placeholder that became invited on its own row, so it keeps the roles it holds. */
35
+ export interface InviteReply {
36
+ person: string;
37
+ personId: string;
38
+ email: string;
39
+ inPlace: boolean;
40
+ }
41
+ export declare function formatInviteSentence(reply: InviteReply, clean: (value: string) => string): string;
31
42
  //# sourceMappingURL=seatSentence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seatSentence.d.ts","sourceRoot":"","sources":["../../src/lib/seatSentence.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,SAAS;IACzB,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAcxH"}
1
+ {"version":3,"file":"seatSentence.d.ts","sourceRoot":"","sources":["../../src/lib/seatSentence.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,SAAS;IACzB,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAcxH;AAED;qGACqG;AACrG,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAKjG"}
@@ -16,4 +16,10 @@ export function formatSeatSentence(action, reply, clean) {
16
16
  ? `Unseated ${who} from ${roleLabel} in ${teamLabel}.`
17
17
  : `${who} did not hold ${roleLabel} in ${teamLabel}; nothing changed.`;
18
18
  }
19
+ export function formatInviteSentence(reply, clean) {
20
+ const who = `${clean(reply.person)} [${reply.personId}]`;
21
+ return reply.inPlace
22
+ ? `Invited ${who} at ${clean(reply.email)}; they keep every role they already hold.`
23
+ : `Invited ${who} at ${clean(reply.email)} as a new person.`;
24
+ }
19
25
  //# sourceMappingURL=seatSentence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"seatSentence.js","sourceRoot":"","sources":["../../src/lib/seatSentence.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAC7G,gEAAgE;AAChE,uDAAuD;AA4BvD,MAAM,UAAU,kBAAkB,CAAC,MAAyB,EAAE,KAAgB,EAAE,KAAgC;IAC/G,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,YAAY,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9J,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5I,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC;IACzE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,GAAG,EAAE,OAAO,SAAS,OAAO,SAAS,GAAG,CAAC;IACjG,CAAC;IACD,OAAO,KAAK,CAAC,OAAO;QACnB,CAAC,CAAC,YAAY,GAAG,SAAS,SAAS,OAAO,SAAS,GAAG;QACtD,CAAC,CAAC,GAAG,GAAG,iBAAiB,SAAS,OAAO,SAAS,oBAAoB,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"seatSentence.js","sourceRoot":"","sources":["../../src/lib/seatSentence.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAC7G,gEAAgE;AAChE,uDAAuD;AA8BvD,MAAM,UAAU,kBAAkB,CAAC,MAAyB,EAAE,KAAgB,EAAE,KAAgC;IAC/G,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,YAAY,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9J,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5I,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC;IACzE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,GAAG,EAAE,OAAO,SAAS,OAAO,SAAS,GAAG,CAAC;IACjG,CAAC;IACD,OAAO,KAAK,CAAC,OAAO;QACnB,CAAC,CAAC,YAAY,GAAG,SAAS,SAAS,OAAO,SAAS,GAAG;QACtD,CAAC,CAAC,GAAG,GAAG,iBAAiB,SAAS,OAAO,SAAS,oBAAoB,CAAC;AACzE,CAAC;AAWD,MAAM,UAAU,oBAAoB,CAAC,KAAkB,EAAE,KAAgC;IACxF,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC;IACzD,OAAO,KAAK,CAAC,OAAO;QACnB,CAAC,CAAC,WAAW,GAAG,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,2CAA2C;QACpF,CAAC,CAAC,WAAW,GAAG,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC;AAC/D,CAAC"}
@@ -1,5 +1,6 @@
1
1
  /**
2
- * `pb role accountable` — registration (WP-730 S2); `pb role seat` / `pb role unseat` (TASK-633 S3c, DEC-1954).
2
+ * `pb role accountable` — registration (WP-730 S2); `pb role seat` / `pb role unseat` (TASK-633 S3c, DEC-1954);
3
+ * `pb people invite` (TASK-637, DEC-1953): the organisation's two nouns share this file so index.ts does not grow.
3
4
  *
4
5
  * Its own file rather than more lines in `packages/cli/src/index.ts` (1,069 LOC and
5
6
  * shrink-only) — the same `register*Commands.ts` split `registerOutcomeCommands.ts` already
@@ -1 +1 @@
1
- {"version":3,"file":"registerRoleCommands.d.ts","sourceRoot":"","sources":["../src/registerRoleCommands.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4B3D"}
1
+ {"version":3,"file":"registerRoleCommands.d.ts","sourceRoot":"","sources":["../src/registerRoleCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsC3D"}
@@ -1,4 +1,5 @@
1
1
  import { runRoleAccountable, runRoleSeat, runRoleUnseat } from './commands/role.js';
2
+ import { runPeopleInvite } from './commands/people.js';
2
3
  export function registerRoleCommands(program) {
3
4
  const roleCmd = program
4
5
  .command('role')
@@ -24,5 +25,14 @@ export function registerRoleCommands(program) {
24
25
  .requiredOption('--person <id-or-email>', 'The holder, by person id or exact email')
25
26
  .option('--team <team-id>', 'Only for Team Lead, which is held in every team')
26
27
  .action(runRoleUnseat);
28
+ program
29
+ .command('people')
30
+ .description('People in this workspace')
31
+ .command('invite [person-id]')
32
+ .description('Invite a person by email. Give a placeholder\'s person id to invite them in place: they keep every role they hold\n'
33
+ + 'Example: pb people invite <person-id> --email jan@example.com')
34
+ .requiredOption('--email <email>', 'Where the login link goes')
35
+ .option('--name <name>', 'Only for a new person; a placeholder keeps its own name')
36
+ .action(runPeopleInvite);
27
37
  }
28
38
  //# sourceMappingURL=registerRoleCommands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registerRoleCommands.js","sourceRoot":"","sources":["../src/registerRoleCommands.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEpF,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACpD,MAAM,OAAO,GAAG,OAAO;SACrB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yDAAyD,CAAC,CAAC;IAEzE,OAAO;SACL,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CAAC,2HAA2H,CAAC;SACxI,MAAM,CAAC,uBAAuB,EAAE,0DAA0D,CAAC;SAC3F,MAAM,CAAC,aAAa,EAAE,2DAA2D,CAAC;SAClF,MAAM,CAAC,cAAc,EAAE,2DAA2D,CAAC;SACnF,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAE7B,OAAO;SACL,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,6EAA6E;UACvF,uDAAuD,CAAC;SAC1D,MAAM,CAAC,wBAAwB,EAAE,iDAAiD,CAAC;SACnF,MAAM,CAAC,qBAAqB,EAAE,qIAAqI,CAAC;SACpK,MAAM,CAAC,kBAAkB,EAAE,iDAAiD,CAAC;SAC7E,MAAM,CAAC,WAAW,CAAC,CAAC;IAEtB,OAAO;SACL,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,kHAAkH,CAAC;SAC/H,cAAc,CAAC,wBAAwB,EAAE,yCAAyC,CAAC;SACnF,MAAM,CAAC,kBAAkB,EAAE,iDAAiD,CAAC;SAC7E,MAAM,CAAC,aAAa,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"registerRoleCommands.js","sourceRoot":"","sources":["../src/registerRoleCommands.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACpD,MAAM,OAAO,GAAG,OAAO;SACrB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yDAAyD,CAAC,CAAC;IAEzE,OAAO;SACL,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CAAC,2HAA2H,CAAC;SACxI,MAAM,CAAC,uBAAuB,EAAE,0DAA0D,CAAC;SAC3F,MAAM,CAAC,aAAa,EAAE,2DAA2D,CAAC;SAClF,MAAM,CAAC,cAAc,EAAE,2DAA2D,CAAC;SACnF,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAE7B,OAAO;SACL,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,6EAA6E;UACvF,uDAAuD,CAAC;SAC1D,MAAM,CAAC,wBAAwB,EAAE,iDAAiD,CAAC;SACnF,MAAM,CAAC,qBAAqB,EAAE,qIAAqI,CAAC;SACpK,MAAM,CAAC,kBAAkB,EAAE,iDAAiD,CAAC;SAC7E,MAAM,CAAC,WAAW,CAAC,CAAC;IAEtB,OAAO;SACL,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,kHAAkH,CAAC;SAC/H,cAAc,CAAC,wBAAwB,EAAE,yCAAyC,CAAC;SACnF,MAAM,CAAC,kBAAkB,EAAE,iDAAiD,CAAC;SAC7E,MAAM,CAAC,aAAa,CAAC,CAAC;IAExB,OAAO;SACL,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0BAA0B,CAAC;SACvC,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,qHAAqH;UAC/H,+DAA+D,CAAC;SAClE,cAAc,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;SAC9D,MAAM,CAAC,eAAe,EAAE,yDAAyD,CAAC;SAClF,MAAM,CAAC,eAAe,CAAC,CAAC;AAC3B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@productbrain/cli",
3
- "version": "0.1.0-beta.9533",
3
+ "version": "0.1.0-beta.9534",
4
4
  "description": "Product Brain — Chain knowledge and write-back CLI",
5
5
  "type": "module",
6
6
  "bin": {