@doist/todoist-cli 1.43.0-next.1 → 1.43.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/CHANGELOG.md +7 -0
- package/dist/commands/reminder/get.d.ts +7 -0
- package/dist/commands/reminder/get.d.ts.map +1 -0
- package/dist/commands/reminder/get.js +19 -0
- package/dist/commands/reminder/get.js.map +1 -0
- package/dist/commands/reminder/helpers.d.ts +5 -1
- package/dist/commands/reminder/helpers.d.ts.map +1 -1
- package/dist/commands/reminder/helpers.js +37 -0
- package/dist/commands/reminder/helpers.js.map +1 -1
- package/dist/commands/reminder/index.d.ts.map +1 -1
- package/dist/commands/reminder/index.js +15 -0
- package/dist/commands/reminder/index.js.map +1 -1
- package/dist/commands/reminder/location/add.d.ts +12 -0
- package/dist/commands/reminder/location/add.d.ts.map +1 -0
- package/dist/commands/reminder/location/add.js +60 -0
- package/dist/commands/reminder/location/add.js.map +1 -0
- package/dist/commands/reminder/location/delete.d.ts +7 -0
- package/dist/commands/reminder/location/delete.d.ts.map +1 -0
- package/dist/commands/reminder/location/delete.js +23 -0
- package/dist/commands/reminder/location/delete.js.map +1 -0
- package/dist/commands/reminder/location/get.d.ts +7 -0
- package/dist/commands/reminder/location/get.d.ts.map +1 -0
- package/dist/commands/reminder/location/get.js +18 -0
- package/dist/commands/reminder/location/get.js.map +1 -0
- package/dist/commands/reminder/location/index.d.ts +3 -0
- package/dist/commands/reminder/location/index.d.ts.map +1 -0
- package/dist/commands/reminder/location/index.js +72 -0
- package/dist/commands/reminder/location/index.js.map +1 -0
- package/dist/commands/reminder/location/update.d.ts +12 -0
- package/dist/commands/reminder/location/update.d.ts.map +1 -0
- package/dist/commands/reminder/location/update.js +45 -0
- package/dist/commands/reminder/location/update.js.map +1 -0
- package/dist/commands/workspace/activity.d.ts +9 -0
- package/dist/commands/workspace/activity.d.ts.map +1 -0
- package/dist/commands/workspace/activity.js +93 -0
- package/dist/commands/workspace/activity.js.map +1 -0
- package/dist/commands/workspace/create.d.ts +14 -0
- package/dist/commands/workspace/create.d.ts.map +1 -0
- package/dist/commands/workspace/create.js +58 -0
- package/dist/commands/workspace/create.js.map +1 -0
- package/dist/commands/workspace/delete.d.ts +5 -0
- package/dist/commands/workspace/delete.d.ts.map +1 -0
- package/dist/commands/workspace/delete.js +31 -0
- package/dist/commands/workspace/delete.js.map +1 -0
- package/dist/commands/workspace/helpers.d.ts +24 -1
- package/dist/commands/workspace/helpers.d.ts.map +1 -1
- package/dist/commands/workspace/helpers.js +113 -1
- package/dist/commands/workspace/helpers.js.map +1 -1
- package/dist/commands/workspace/index.d.ts.map +1 -1
- package/dist/commands/workspace/index.js +115 -1
- package/dist/commands/workspace/index.js.map +1 -1
- package/dist/commands/workspace/update.d.ts +15 -0
- package/dist/commands/workspace/update.d.ts.map +1 -0
- package/dist/commands/workspace/update.js +75 -0
- package/dist/commands/workspace/update.js.map +1 -0
- package/dist/commands/workspace/user-tasks.d.ts +9 -0
- package/dist/commands/workspace/user-tasks.d.ts.map +1 -0
- package/dist/commands/workspace/user-tasks.js +77 -0
- package/dist/commands/workspace/user-tasks.js.map +1 -0
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/api/core.d.ts.map +1 -1
- package/dist/lib/api/core.js +13 -0
- package/dist/lib/api/core.js.map +1 -1
- package/dist/lib/api/reminders.d.ts +21 -0
- package/dist/lib/api/reminders.d.ts.map +1 -1
- package/dist/lib/api/reminders.js +37 -1
- package/dist/lib/api/reminders.js.map +1 -1
- package/dist/lib/errors.d.ts +1 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/output.d.ts +1 -1
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +0 -14
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/pagination.d.ts +0 -1
- package/dist/lib/pagination.d.ts.map +1 -1
- package/dist/lib/pagination.js +0 -1
- package/dist/lib/pagination.js.map +1 -1
- package/dist/lib/permissions.d.ts.map +1 -1
- package/dist/lib/permissions.js +4 -0
- package/dist/lib/permissions.js.map +1 -1
- package/dist/lib/refs.d.ts +1 -2
- package/dist/lib/refs.d.ts.map +1 -1
- package/dist/lib/refs.js +0 -5
- package/dist/lib/refs.js.map +1 -1
- package/dist/lib/skills/content.d.ts +1 -1
- package/dist/lib/skills/content.d.ts.map +1 -1
- package/dist/lib/skills/content.js +13 -21
- package/dist/lib/skills/content.js.map +1 -1
- package/dist/lib/urls.d.ts +0 -2
- package/dist/lib/urls.d.ts.map +1 -1
- package/dist/lib/urls.js +0 -6
- package/dist/lib/urls.js.map +1 -1
- package/package.json +2 -2
- package/dist/commands/goal.d.ts +0 -3
- package/dist/commands/goal.d.ts.map +0 -1
- package/dist/commands/goal.js +0 -344
- package/dist/commands/goal.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface CreateWorkspaceOptions {
|
|
2
|
+
name?: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
linkSharing?: boolean;
|
|
5
|
+
guestAccess?: boolean;
|
|
6
|
+
domain?: string;
|
|
7
|
+
domainDiscovery?: boolean;
|
|
8
|
+
restrictEmailDomains?: boolean;
|
|
9
|
+
json?: boolean;
|
|
10
|
+
full?: boolean;
|
|
11
|
+
dryRun?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function createWorkspace(options: CreateWorkspaceOptions): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/workspace/create.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,sBAAsB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DpF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getApi } from '../../lib/api/core.js';
|
|
3
|
+
import { clearWorkspaceCache, fetchWorkspaces } from '../../lib/api/workspaces.js';
|
|
4
|
+
import { isQuiet } from '../../lib/global-args.js';
|
|
5
|
+
import { printDryRun } from '../../lib/output.js';
|
|
6
|
+
import { formatWorkspaceJson } from './helpers.js';
|
|
7
|
+
export async function createWorkspace(options) {
|
|
8
|
+
if (!options.name) {
|
|
9
|
+
throw new Error('missing required --name');
|
|
10
|
+
}
|
|
11
|
+
const args = { name: options.name };
|
|
12
|
+
if (options.description !== undefined)
|
|
13
|
+
args.description = options.description;
|
|
14
|
+
if (options.linkSharing !== undefined)
|
|
15
|
+
args.isLinkSharingEnabled = options.linkSharing;
|
|
16
|
+
if (options.guestAccess !== undefined)
|
|
17
|
+
args.isGuestAllowed = options.guestAccess;
|
|
18
|
+
if (options.domain !== undefined)
|
|
19
|
+
args.domainName = options.domain;
|
|
20
|
+
if (options.domainDiscovery !== undefined)
|
|
21
|
+
args.domainDiscovery = options.domainDiscovery;
|
|
22
|
+
if (options.restrictEmailDomains !== undefined) {
|
|
23
|
+
args.restrictEmailDomains = options.restrictEmailDomains;
|
|
24
|
+
}
|
|
25
|
+
if (options.dryRun) {
|
|
26
|
+
printDryRun('create workspace', {
|
|
27
|
+
Name: options.name,
|
|
28
|
+
Description: options.description,
|
|
29
|
+
'Link sharing': options.linkSharing !== undefined ? String(options.linkSharing) : undefined,
|
|
30
|
+
'Guest access': options.guestAccess !== undefined ? String(options.guestAccess) : undefined,
|
|
31
|
+
Domain: options.domain,
|
|
32
|
+
'Domain discovery': options.domainDiscovery !== undefined ? String(options.domainDiscovery) : undefined,
|
|
33
|
+
'Restrict email domains': options.restrictEmailDomains !== undefined
|
|
34
|
+
? String(options.restrictEmailDomains)
|
|
35
|
+
: undefined,
|
|
36
|
+
});
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const api = await getApi();
|
|
40
|
+
const workspace = await api.addWorkspace(args);
|
|
41
|
+
clearWorkspaceCache();
|
|
42
|
+
if (options.json) {
|
|
43
|
+
// Emit the curated Workspace shape used by `workspace view --json`
|
|
44
|
+
// so scripts see a consistent contract across create/view/update.
|
|
45
|
+
// Fall back to the raw SDK response if sync hasn't picked up the
|
|
46
|
+
// new workspace yet.
|
|
47
|
+
const refreshed = (await fetchWorkspaces()).find((w) => w.id === workspace.id);
|
|
48
|
+
console.log(JSON.stringify(refreshed ? formatWorkspaceJson(refreshed, options.full ?? false) : workspace, null, 2));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (isQuiet()) {
|
|
52
|
+
console.log(workspace.id);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
console.log(`Created: ${workspace.name}`);
|
|
56
|
+
console.log(chalk.dim(`ID: ${workspace.id}`));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/workspace/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/workspace/delete.ts"],"names":[],"mappings":"AAOA,wBAAsB,sBAAsB,CACxC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { getApi } from '../../lib/api/core.js';
|
|
2
|
+
import { clearWorkspaceCache } from '../../lib/api/workspaces.js';
|
|
3
|
+
import { isQuiet } from '../../lib/global-args.js';
|
|
4
|
+
import { printDryRun } from '../../lib/output.js';
|
|
5
|
+
import { resolveWorkspaceRef } from '../../lib/refs.js';
|
|
6
|
+
import { assertWorkspaceAdmin } from './helpers.js';
|
|
7
|
+
export async function deleteWorkspaceCommand(ref, options) {
|
|
8
|
+
const workspace = await resolveWorkspaceRef(ref);
|
|
9
|
+
// Admin check runs before dry-run so the preview can't silently
|
|
10
|
+
// claim a delete would succeed when the server would reject it.
|
|
11
|
+
assertWorkspaceAdmin(workspace, 'delete');
|
|
12
|
+
if (options.dryRun) {
|
|
13
|
+
printDryRun('delete workspace', {
|
|
14
|
+
Workspace: workspace.name,
|
|
15
|
+
ID: workspace.id,
|
|
16
|
+
});
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (!options.yes) {
|
|
20
|
+
console.log(`Would delete: ${workspace.name} (id:${workspace.id})`);
|
|
21
|
+
console.log('Use --yes to confirm.');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const api = await getApi();
|
|
25
|
+
await api.deleteWorkspace(workspace.id);
|
|
26
|
+
clearWorkspaceCache();
|
|
27
|
+
if (!isQuiet()) {
|
|
28
|
+
console.log(`Deleted: ${workspace.name} (id:${workspace.id})`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/workspace/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CACxC,GAAW,EACX,OAA4C;IAE5C,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAA;IAChD,gEAAgE;IAChE,gEAAgE;IAChE,oBAAoB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAEzC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,WAAW,CAAC,kBAAkB,EAAE;YAC5B,SAAS,EAAE,SAAS,CAAC,IAAI;YACzB,EAAE,EAAE,SAAS,CAAC,EAAE;SACnB,CAAC,CAAA;QACF,OAAM;IACV,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,CAAC,IAAI,QAAQ,SAAS,CAAC,EAAE,GAAG,CAAC,CAAA;QACnE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;QACpC,OAAM;IACV,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,MAAM,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACvC,mBAAmB,EAAE,CAAA;IAErB,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,IAAI,QAAQ,SAAS,CAAC,EAAE,GAAG,CAAC,CAAA;IAClE,CAAC;AACL,CAAC"}
|
|
@@ -1,2 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
import { type WorkspaceUser } from '@doist/todoist-sdk';
|
|
2
|
+
import type { Workspace } from '../../lib/api/workspaces.js';
|
|
3
|
+
export declare const WORKSPACE_ROLES: readonly string[];
|
|
4
|
+
/**
|
|
5
|
+
* Curated JSON shape for a workspace, matching the output of
|
|
6
|
+
* `workspace view --json` / `workspace list --json`. Used by create/update
|
|
7
|
+
* so scripts that round-trip through these commands see a consistent
|
|
8
|
+
* contract regardless of which operation produced the payload.
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatWorkspaceJson(workspace: Workspace, full: boolean): Workspace | Record<string, unknown>;
|
|
11
|
+
/**
|
|
12
|
+
* Throws `NOT_ADMIN` if the current user is not an ADMIN of the workspace.
|
|
13
|
+
* Safe to call before a `--dry-run` early return so non-admins fail loudly
|
|
14
|
+
* even when previewing.
|
|
15
|
+
*/
|
|
16
|
+
export declare function assertWorkspaceAdmin(workspace: Workspace, action: string): void;
|
|
17
|
+
/**
|
|
18
|
+
* Resolves a workspace user reference (id:xxx, raw id, email, or full name)
|
|
19
|
+
* to a `WorkspaceUser` by paginating `getWorkspaceUsers` for the workspace.
|
|
20
|
+
* Matches are: (1) exact id, (2) exact email (case-insensitive),
|
|
21
|
+
* (3) exact fullName (case-insensitive), (4) substring in fullName or email.
|
|
22
|
+
* Ambiguous fuzzy matches throw; exact matches always win.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveWorkspaceUserRef(workspaceId: string, ref: string): Promise<WorkspaceUser>;
|
|
2
25
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/workspace/helpers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/workspace/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAM5D,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAwB,CAAA;AAErE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,OAAO,GACd,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWrC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAQ/E;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CACzC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC,CAoDxB"}
|
|
@@ -1,2 +1,114 @@
|
|
|
1
|
-
|
|
1
|
+
import { WORKSPACE_ROLES as SDK_WORKSPACE_ROLES } from '@doist/todoist-sdk';
|
|
2
|
+
import { getApi } from '../../lib/api/core.js';
|
|
3
|
+
import { CliError } from '../../lib/errors.js';
|
|
4
|
+
import { extractId, isIdRef } from '../../lib/refs.js';
|
|
5
|
+
// Widen the SDK's readonly tuple to `readonly string[]` so callers can use
|
|
6
|
+
// `.includes(someString)` and spread into mutable arrays without casts.
|
|
7
|
+
export const WORKSPACE_ROLES = SDK_WORKSPACE_ROLES;
|
|
8
|
+
/**
|
|
9
|
+
* Curated JSON shape for a workspace, matching the output of
|
|
10
|
+
* `workspace view --json` / `workspace list --json`. Used by create/update
|
|
11
|
+
* so scripts that round-trip through these commands see a consistent
|
|
12
|
+
* contract regardless of which operation produced the payload.
|
|
13
|
+
*/
|
|
14
|
+
export function formatWorkspaceJson(workspace, full) {
|
|
15
|
+
if (full)
|
|
16
|
+
return workspace;
|
|
17
|
+
return {
|
|
18
|
+
id: workspace.id,
|
|
19
|
+
name: workspace.name,
|
|
20
|
+
plan: workspace.plan,
|
|
21
|
+
role: workspace.role,
|
|
22
|
+
domainName: workspace.domainName,
|
|
23
|
+
memberCount: workspace.currentMemberCount,
|
|
24
|
+
projectCount: workspace.currentActiveProjects,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Throws `NOT_ADMIN` if the current user is not an ADMIN of the workspace.
|
|
29
|
+
* Safe to call before a `--dry-run` early return so non-admins fail loudly
|
|
30
|
+
* even when previewing.
|
|
31
|
+
*/
|
|
32
|
+
export function assertWorkspaceAdmin(workspace, action) {
|
|
33
|
+
if (workspace.role === 'ADMIN')
|
|
34
|
+
return;
|
|
35
|
+
const role = workspace.role ?? 'none';
|
|
36
|
+
throw new CliError('NOT_ADMIN', `Only workspace admins can ${action} '${workspace.name}' (your role: ${role}).`, ['Ask a workspace admin to perform this action.']);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Resolves a workspace user reference (id:xxx, raw id, email, or full name)
|
|
40
|
+
* to a `WorkspaceUser` by paginating `getWorkspaceUsers` for the workspace.
|
|
41
|
+
* Matches are: (1) exact id, (2) exact email (case-insensitive),
|
|
42
|
+
* (3) exact fullName (case-insensitive), (4) substring in fullName or email.
|
|
43
|
+
* Ambiguous fuzzy matches throw; exact matches always win.
|
|
44
|
+
*/
|
|
45
|
+
export async function resolveWorkspaceUserRef(workspaceId, ref) {
|
|
46
|
+
const api = await getApi();
|
|
47
|
+
if (isIdRef(ref)) {
|
|
48
|
+
const id = extractId(ref);
|
|
49
|
+
const user = await findUser(workspaceId, (u) => u.userId === id);
|
|
50
|
+
if (user)
|
|
51
|
+
return user;
|
|
52
|
+
throw new CliError('NOT_FOUND', `No user with id "${id}" found in workspace.`, [
|
|
53
|
+
'Use `td workspace users <workspace>` to list members.',
|
|
54
|
+
]);
|
|
55
|
+
}
|
|
56
|
+
// Collect all workspace users once, then match.
|
|
57
|
+
const users = [];
|
|
58
|
+
let cursor;
|
|
59
|
+
while (true) {
|
|
60
|
+
const response = await api.getWorkspaceUsers({
|
|
61
|
+
workspaceId,
|
|
62
|
+
cursor,
|
|
63
|
+
limit: 200,
|
|
64
|
+
});
|
|
65
|
+
users.push(...response.workspaceUsers);
|
|
66
|
+
if (!response.hasMore || !response.nextCursor)
|
|
67
|
+
break;
|
|
68
|
+
cursor = response.nextCursor;
|
|
69
|
+
}
|
|
70
|
+
const lower = ref.toLowerCase();
|
|
71
|
+
const exactId = users.find((u) => u.userId === ref);
|
|
72
|
+
if (exactId)
|
|
73
|
+
return exactId;
|
|
74
|
+
const exactEmail = users.find((u) => u.userEmail.toLowerCase() === lower);
|
|
75
|
+
if (exactEmail)
|
|
76
|
+
return exactEmail;
|
|
77
|
+
const exactName = users.find((u) => u.fullName.toLowerCase() === lower);
|
|
78
|
+
if (exactName)
|
|
79
|
+
return exactName;
|
|
80
|
+
const fuzzy = users.filter((u) => u.fullName.toLowerCase().includes(lower) || u.userEmail.toLowerCase().includes(lower));
|
|
81
|
+
if (fuzzy.length === 1)
|
|
82
|
+
return fuzzy[0];
|
|
83
|
+
if (fuzzy.length > 1) {
|
|
84
|
+
throw new CliError('AMBIGUOUS_ASSIGNEE', `Multiple workspace users match "${ref}".`, [
|
|
85
|
+
`Matches: ${fuzzy
|
|
86
|
+
.slice(0, 5)
|
|
87
|
+
.map((u) => `${u.fullName} <${u.userEmail}>`)
|
|
88
|
+
.join(', ')}`,
|
|
89
|
+
'Use an email address or id:xxx to disambiguate.',
|
|
90
|
+
]);
|
|
91
|
+
}
|
|
92
|
+
throw new CliError('NOT_FOUND', `No workspace user found matching "${ref}".`, [
|
|
93
|
+
'Use `td workspace users <workspace>` to list members.',
|
|
94
|
+
]);
|
|
95
|
+
}
|
|
96
|
+
async function findUser(workspaceId, predicate) {
|
|
97
|
+
const api = await getApi();
|
|
98
|
+
let cursor;
|
|
99
|
+
while (true) {
|
|
100
|
+
const response = await api.getWorkspaceUsers({
|
|
101
|
+
workspaceId,
|
|
102
|
+
cursor,
|
|
103
|
+
limit: 200,
|
|
104
|
+
});
|
|
105
|
+
for (const user of response.workspaceUsers) {
|
|
106
|
+
if (predicate(user))
|
|
107
|
+
return user;
|
|
108
|
+
}
|
|
109
|
+
if (!response.hasMore || !response.nextCursor)
|
|
110
|
+
return null;
|
|
111
|
+
cursor = response.nextCursor;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
2
114
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/workspace/helpers.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/workspace/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,mBAAmB,EAAsB,MAAM,oBAAoB,CAAA;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEtD,2EAA2E;AAC3E,wEAAwE;AACxE,MAAM,CAAC,MAAM,eAAe,GAAsB,mBAAmB,CAAA;AAErE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAC/B,SAAoB,EACpB,IAAa;IAEb,IAAI,IAAI;QAAE,OAAO,SAAS,CAAA;IAC1B,OAAO;QACH,EAAE,EAAE,SAAS,CAAC,EAAE;QAChB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,WAAW,EAAE,SAAS,CAAC,kBAAkB;QACzC,YAAY,EAAE,SAAS,CAAC,qBAAqB;KAChD,CAAA;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAoB,EAAE,MAAc;IACrE,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO;QAAE,OAAM;IACtC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,MAAM,CAAA;IACrC,MAAM,IAAI,QAAQ,CACd,WAAW,EACX,6BAA6B,MAAM,KAAK,SAAS,CAAC,IAAI,iBAAiB,IAAI,IAAI,EAC/E,CAAC,+CAA+C,CAAC,CACpD,CAAA;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,WAAmB,EACnB,GAAW;IAEX,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAE1B,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;QACzB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAA;QAChE,IAAI,IAAI;YAAE,OAAO,IAAI,CAAA;QACrB,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,oBAAoB,EAAE,uBAAuB,EAAE;YAC3E,uDAAuD;SAC1D,CAAC,CAAA;IACN,CAAC;IAED,gDAAgD;IAChD,MAAM,KAAK,GAAoB,EAAE,CAAA;IACjC,IAAI,MAA0B,CAAA;IAC9B,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC;YACzC,WAAW;YACX,MAAM;YACN,KAAK,EAAE,GAAG;SACb,CAAC,CAAA;QACF,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU;YAAE,MAAK;QACpD,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAA;IAChC,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAA;IACnD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAA;IAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAA;IACzE,IAAI,UAAU;QAAE,OAAO,UAAU,CAAA;IACjC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAA;IACvE,IAAI,SAAS;QAAE,OAAO,SAAS,CAAA;IAE/B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CACtB,CAAC,CAAC,EAAE,EAAE,CACF,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC5F,CAAA;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAE,CAAA;IACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,mCAAmC,GAAG,IAAI,EAAE;YACjF,YAAY,KAAK;iBACZ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC;iBAC5C,IAAI,CAAC,IAAI,CAAC,EAAE;YACjB,iDAAiD;SACpD,CAAC,CAAA;IACN,CAAC;IAED,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,qCAAqC,GAAG,IAAI,EAAE;QAC1E,uDAAuD;KAC1D,CAAC,CAAA;AACN,CAAC;AAED,KAAK,UAAU,QAAQ,CACnB,WAAmB,EACnB,SAA2C;IAE3C,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,IAAI,MAA0B,CAAA;IAC9B,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC;YACzC,WAAW;YACX,MAAM;YACN,KAAK,EAAE,GAAG;SACb,CAAC,CAAA;QACF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;YACzC,IAAI,SAAS,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAA;QACpC,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU;YAAE,OAAO,IAAI,CAAA;QAC1D,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAA;IAChC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/workspace/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/workspace/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAiB3C,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4P/D"}
|
|
@@ -2,10 +2,15 @@ import { Option } from 'commander';
|
|
|
2
2
|
import { withUnvalidatedChoices } from '../../lib/completion.js';
|
|
3
3
|
import { CURSOR_DESCRIPTION } from '../../lib/constants.js';
|
|
4
4
|
import { CliError } from '../../lib/errors.js';
|
|
5
|
+
import { showWorkspaceActivity } from './activity.js';
|
|
6
|
+
import { createWorkspace } from './create.js';
|
|
7
|
+
import { deleteWorkspaceCommand } from './delete.js';
|
|
5
8
|
import { WORKSPACE_ROLES } from './helpers.js';
|
|
6
9
|
import { showWorkspaceInsights } from './insights.js';
|
|
7
10
|
import { listWorkspaces } from './list.js';
|
|
8
11
|
import { listWorkspaceProjects } from './projects.js';
|
|
12
|
+
import { updateWorkspaceCommand } from './update.js';
|
|
13
|
+
import { listWorkspaceUserTasks } from './user-tasks.js';
|
|
9
14
|
import { listWorkspaceUsers } from './users.js';
|
|
10
15
|
import { viewWorkspace } from './view.js';
|
|
11
16
|
export function registerWorkspaceCommand(program) {
|
|
@@ -29,6 +34,68 @@ export function registerWorkspaceCommand(program) {
|
|
|
29
34
|
}
|
|
30
35
|
return viewWorkspace(ref, options);
|
|
31
36
|
});
|
|
37
|
+
const createCmd = workspace
|
|
38
|
+
.command('create')
|
|
39
|
+
.description('Create a new workspace')
|
|
40
|
+
.option('--name <name>', 'Workspace name (required)')
|
|
41
|
+
.option('--description <text>', 'Workspace description')
|
|
42
|
+
.option('--link-sharing', 'Enable link sharing')
|
|
43
|
+
.option('--no-link-sharing', 'Disable link sharing')
|
|
44
|
+
.option('--guest-access', 'Allow guests')
|
|
45
|
+
.option('--no-guest-access', 'Disallow guests')
|
|
46
|
+
.option('--domain <domain>', 'Workspace email domain')
|
|
47
|
+
.option('--domain-discovery', 'Allow matching domains to discover this workspace')
|
|
48
|
+
.option('--no-domain-discovery', 'Disallow matching domains to discover this workspace')
|
|
49
|
+
.option('--restrict-email-domains', 'Restrict invites to the workspace domain')
|
|
50
|
+
.option('--no-restrict-email-domains', 'Do not restrict invites to the workspace domain')
|
|
51
|
+
.option('--json', 'Output as JSON')
|
|
52
|
+
.option('--full', 'Include all fields in JSON output')
|
|
53
|
+
.option('--dry-run', 'Preview what would happen without executing')
|
|
54
|
+
.action((options) => {
|
|
55
|
+
if (!options.name) {
|
|
56
|
+
createCmd.help();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
return createWorkspace(options);
|
|
60
|
+
});
|
|
61
|
+
const updateCmd = workspace
|
|
62
|
+
.command('update [ref]')
|
|
63
|
+
.description('Update a workspace (admin only)')
|
|
64
|
+
.option('--name <name>', 'New workspace name')
|
|
65
|
+
.option('--description <text>', 'Workspace description')
|
|
66
|
+
.option('--link-sharing', 'Enable link sharing')
|
|
67
|
+
.option('--no-link-sharing', 'Disable link sharing')
|
|
68
|
+
.option('--guest-access', 'Allow guests')
|
|
69
|
+
.option('--no-guest-access', 'Disallow guests')
|
|
70
|
+
.option('--domain <domain>', 'Workspace email domain')
|
|
71
|
+
.option('--domain-discovery', 'Allow matching domains to discover this workspace')
|
|
72
|
+
.option('--no-domain-discovery', 'Disallow matching domains to discover this workspace')
|
|
73
|
+
.option('--restrict-email-domains', 'Restrict invites to the workspace domain')
|
|
74
|
+
.option('--no-restrict-email-domains', 'Do not restrict invites to the workspace domain')
|
|
75
|
+
.option('--collapsed', 'Collapse workspace in the UI')
|
|
76
|
+
.option('--no-collapsed', 'Uncollapse workspace in the UI')
|
|
77
|
+
.option('--json', 'Output as JSON')
|
|
78
|
+
.option('--full', 'Include all fields in JSON output')
|
|
79
|
+
.option('--dry-run', 'Preview what would happen without executing')
|
|
80
|
+
.action((ref, options) => {
|
|
81
|
+
if (!ref) {
|
|
82
|
+
updateCmd.help();
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
return updateWorkspaceCommand(ref, options);
|
|
86
|
+
});
|
|
87
|
+
const deleteCmd = workspace
|
|
88
|
+
.command('delete [ref]')
|
|
89
|
+
.description('Delete a workspace (admin only)')
|
|
90
|
+
.option('--yes', 'Skip confirmation prompt')
|
|
91
|
+
.option('--dry-run', 'Preview what would happen without executing')
|
|
92
|
+
.action((ref, options) => {
|
|
93
|
+
if (!ref) {
|
|
94
|
+
deleteCmd.help();
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
return deleteWorkspaceCommand(ref, options);
|
|
98
|
+
});
|
|
32
99
|
const projectsCmd = workspace
|
|
33
100
|
.command('projects [ref]')
|
|
34
101
|
.description('List projects in a workspace')
|
|
@@ -54,7 +121,7 @@ export function registerWorkspaceCommand(program) {
|
|
|
54
121
|
.command('users [ref]')
|
|
55
122
|
.description('List users in a workspace')
|
|
56
123
|
.option('--workspace <ref>', 'Workspace name or id:xxx')
|
|
57
|
-
.addOption(withUnvalidatedChoices(new Option('--role <roles>', `Filter by role (comma-separated: ${WORKSPACE_ROLES.join(',')})`), WORKSPACE_ROLES))
|
|
124
|
+
.addOption(withUnvalidatedChoices(new Option('--role <roles>', `Filter by role (comma-separated: ${WORKSPACE_ROLES.join(',')})`), [...WORKSPACE_ROLES]))
|
|
58
125
|
.option('--limit <n>', 'Limit number of results')
|
|
59
126
|
.option('--cursor <cursor>', CURSOR_DESCRIPTION)
|
|
60
127
|
.option('--all', 'Fetch all results (no limit)')
|
|
@@ -72,6 +139,46 @@ export function registerWorkspaceCommand(program) {
|
|
|
72
139
|
}
|
|
73
140
|
return listWorkspaceUsers(ref, options);
|
|
74
141
|
});
|
|
142
|
+
const userTasksCmd = workspace
|
|
143
|
+
.command('user-tasks [ref]')
|
|
144
|
+
.description('List tasks assigned to a user in a workspace')
|
|
145
|
+
.option('--workspace <ref>', 'Workspace name or id:xxx')
|
|
146
|
+
.option('--user <ref>', 'User email, full name, or id:xxx (required)')
|
|
147
|
+
.option('--project-ids <ids>', 'Comma-separated project IDs to filter')
|
|
148
|
+
.option('--json', 'Output as JSON')
|
|
149
|
+
.option('--ndjson', 'Output as newline-delimited JSON')
|
|
150
|
+
.option('--full', 'Include all fields in JSON output')
|
|
151
|
+
.action((refArg, options) => {
|
|
152
|
+
if (refArg && options.workspace) {
|
|
153
|
+
throw new CliError('CONFLICTING_OPTIONS', 'Cannot specify workspace both as argument and --workspace flag');
|
|
154
|
+
}
|
|
155
|
+
const ref = refArg || options.workspace;
|
|
156
|
+
if (!ref) {
|
|
157
|
+
userTasksCmd.help();
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
return listWorkspaceUserTasks(ref, options);
|
|
161
|
+
});
|
|
162
|
+
const activityCmd = workspace
|
|
163
|
+
.command('activity [ref]')
|
|
164
|
+
.description('Show workspace members activity (tasks assigned/overdue)')
|
|
165
|
+
.option('--workspace <ref>', 'Workspace name or id:xxx')
|
|
166
|
+
.option('--user-ids <ids>', 'Comma-separated user IDs to filter')
|
|
167
|
+
.option('--project-ids <ids>', 'Comma-separated project IDs to filter')
|
|
168
|
+
.option('--json', 'Output as JSON')
|
|
169
|
+
.option('--ndjson', 'Output as newline-delimited JSON')
|
|
170
|
+
.option('--full', 'Enrich output with user names/emails')
|
|
171
|
+
.action((refArg, options) => {
|
|
172
|
+
if (refArg && options.workspace) {
|
|
173
|
+
throw new CliError('CONFLICTING_OPTIONS', 'Cannot specify workspace both as argument and --workspace flag');
|
|
174
|
+
}
|
|
175
|
+
const ref = refArg || options.workspace;
|
|
176
|
+
if (!ref) {
|
|
177
|
+
activityCmd.help();
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
return showWorkspaceActivity(ref, options);
|
|
181
|
+
});
|
|
75
182
|
const insightsCmd = workspace
|
|
76
183
|
.command('insights [ref]')
|
|
77
184
|
.description('Show health and progress insights for workspace projects')
|
|
@@ -89,5 +196,12 @@ export function registerWorkspaceCommand(program) {
|
|
|
89
196
|
}
|
|
90
197
|
return showWorkspaceInsights(ref, options);
|
|
91
198
|
});
|
|
199
|
+
workspace.addHelpText('after', `
|
|
200
|
+
Examples:
|
|
201
|
+
$ td workspace create --name "Acme"
|
|
202
|
+
$ td workspace update "Acme" --description "Acme Inc." --dry-run
|
|
203
|
+
$ td workspace delete "Old WS" --yes
|
|
204
|
+
$ td workspace user-tasks "Acme" --user alice@example.com
|
|
205
|
+
$ td workspace activity "Acme" --json`);
|
|
92
206
|
}
|
|
93
207
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/workspace/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/workspace/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,OAAO,EAAE,qBAAqB,EAAiC,MAAM,eAAe,CAAA;AACpF,OAAO,EAAE,eAAe,EAA+B,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAA+B,MAAM,aAAa,CAAA;AACjF,OAAO,EAAE,sBAAsB,EAAkC,MAAM,iBAAiB,CAAA;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACrD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAA;IAE/E,SAAS;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,EAAE,kCAAkC,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CAAC,cAAc,CAAC,CAAA;IAE3B,SAAS;SACJ,OAAO,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SAC1C,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QACrB,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,SAAS,CAAC,IAAI,EAAE,CAAA;YAChB,OAAM;QACV,CAAC;QACD,OAAO,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEN,MAAM,SAAS,GAAG,SAAS;SACtB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;SACpD,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;SACvD,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;SAC/C,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;SACnD,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC;SACxC,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;SAC9C,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;SACrD,MAAM,CAAC,oBAAoB,EAAE,mDAAmD,CAAC;SACjF,MAAM,CAAC,uBAAuB,EAAE,sDAAsD,CAAC;SACvF,MAAM,CAAC,0BAA0B,EAAE,0CAA0C,CAAC;SAC9E,MAAM,CAAC,6BAA6B,EAAE,iDAAiD,CAAC;SACxF,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,CAAC,OAA+B,EAAE,EAAE;QACxC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAChB,SAAS,CAAC,IAAI,EAAE,CAAA;YAChB,OAAM;QACV,CAAC;QACD,OAAO,eAAe,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEN,MAAM,SAAS,GAAG,SAAS;SACtB,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,eAAe,EAAE,oBAAoB,CAAC;SAC7C,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;SACvD,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;SAC/C,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;SACnD,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC;SACxC,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;SAC9C,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;SACrD,MAAM,CAAC,oBAAoB,EAAE,mDAAmD,CAAC;SACjF,MAAM,CAAC,uBAAuB,EAAE,sDAAsD,CAAC;SACvF,MAAM,CAAC,0BAA0B,EAAE,0CAA0C,CAAC;SAC9E,MAAM,CAAC,6BAA6B,EAAE,iDAAiD,CAAC;SACxF,MAAM,CAAC,aAAa,EAAE,8BAA8B,CAAC;SACrD,MAAM,CAAC,gBAAgB,EAAE,gCAAgC,CAAC;SAC1D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,CAAC,GAAuB,EAAE,OAA+B,EAAE,EAAE;QACjE,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,SAAS,CAAC,IAAI,EAAE,CAAA;YAChB,OAAM;QACV,CAAC;QACD,OAAO,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEN,MAAM,SAAS,GAAG,SAAS;SACtB,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,OAAO,EAAE,0BAA0B,CAAC;SAC3C,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,CAAC,GAAuB,EAAE,OAA4C,EAAE,EAAE;QAC9E,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,SAAS,CAAC,IAAI,EAAE,CAAA;YAChB,OAAM;QACV,CAAC;QACD,OAAO,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEN,MAAM,WAAW,GAAG,SAAS;SACxB,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,aAAa,EAAE,yBAAyB,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;SAC/C,MAAM,CAAC,OAAO,EAAE,8BAA8B,CAAC;SAC/C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,EAAE,kCAAkC,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CACH,CACI,MAA0B,EAC1B,OAAsD,EACxD,EAAE;QACA,IAAI,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,QAAQ,CACd,qBAAqB,EACrB,gEAAgE,CACnE,CAAA;QACL,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,WAAW,CAAC,IAAI,EAAE,CAAA;YAClB,OAAM;QACV,CAAC;QACD,OAAO,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC,CACJ,CAAA;IAEL,MAAM,QAAQ,GAAG,SAAS;SACrB,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,SAAS,CACN,sBAAsB,CAClB,IAAI,MAAM,CACN,gBAAgB,EAChB,oCAAoC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CACnE,EACD,CAAC,GAAG,eAAe,CAAC,CACvB,CACJ;SACA,MAAM,CAAC,aAAa,EAAE,yBAAyB,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;SAC/C,MAAM,CAAC,OAAO,EAAE,8BAA8B,CAAC;SAC/C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,EAAE,kCAAkC,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CACH,CACI,MAA0B,EAC1B,OAAqE,EACvE,EAAE;QACA,IAAI,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,QAAQ,CACd,qBAAqB,EACrB,gEAAgE,CACnE,CAAA;QACL,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,QAAQ,CAAC,IAAI,EAAE,CAAA;YACf,OAAM;QACV,CAAC;QACD,OAAO,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC,CACJ,CAAA;IAEL,MAAM,YAAY,GAAG,SAAS;SACzB,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,cAAc,EAAE,6CAA6C,CAAC;SACrE,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;SACtE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,EAAE,kCAAkC,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CACH,CACI,MAA0B,EAC1B,OAA2D,EAC7D,EAAE;QACA,IAAI,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,QAAQ,CACd,qBAAqB,EACrB,gEAAgE,CACnE,CAAA;QACL,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,YAAY,CAAC,IAAI,EAAE,CAAA;YACnB,OAAM;QACV,CAAC;QACD,OAAO,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAC/C,CAAC,CACJ,CAAA;IAEL,MAAM,WAAW,GAAG,SAAS;SACxB,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,kBAAkB,EAAE,oCAAoC,CAAC;SAChE,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;SACtE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,EAAE,kCAAkC,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,sCAAsC,CAAC;SACxD,MAAM,CACH,CACI,MAA0B,EAC1B,OAA0D,EAC5D,EAAE;QACA,IAAI,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,QAAQ,CACd,qBAAqB,EACrB,gEAAgE,CACnE,CAAA;QACL,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,WAAW,CAAC,IAAI,EAAE,CAAA;YAClB,OAAM;QACV,CAAC;QACD,OAAO,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC,CACJ,CAAA;IAEL,MAAM,WAAW,GAAG,SAAS;SACxB,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;SACtE,MAAM,CACH,CACI,MAA0B,EAC1B,OAAoE,EACtE,EAAE;QACA,IAAI,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,QAAQ,CACd,qBAAqB,EACrB,gEAAgE,CACnE,CAAA;QACL,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,WAAW,CAAC,IAAI,EAAE,CAAA;YAClB,OAAM;QACV,CAAC;QACD,OAAO,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC,CACJ,CAAA;IAEL,SAAS,CAAC,WAAW,CACjB,OAAO,EACP;;;;;;wCAMgC,CACnC,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface UpdateWorkspaceOptions {
|
|
2
|
+
name?: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
linkSharing?: boolean;
|
|
5
|
+
guestAccess?: boolean;
|
|
6
|
+
domain?: string;
|
|
7
|
+
domainDiscovery?: boolean;
|
|
8
|
+
restrictEmailDomains?: boolean;
|
|
9
|
+
collapsed?: boolean;
|
|
10
|
+
json?: boolean;
|
|
11
|
+
full?: boolean;
|
|
12
|
+
dryRun?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function updateWorkspaceCommand(ref: string, options: UpdateWorkspaceOptions): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/workspace/update.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,sBAAsB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAsB,sBAAsB,CACxC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC,CAgFf"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { getApi } from '../../lib/api/core.js';
|
|
2
|
+
import { clearWorkspaceCache, fetchWorkspaces } from '../../lib/api/workspaces.js';
|
|
3
|
+
import { CliError } from '../../lib/errors.js';
|
|
4
|
+
import { isQuiet } from '../../lib/global-args.js';
|
|
5
|
+
import { printDryRun } from '../../lib/output.js';
|
|
6
|
+
import { resolveWorkspaceRef } from '../../lib/refs.js';
|
|
7
|
+
import { assertWorkspaceAdmin, formatWorkspaceJson } from './helpers.js';
|
|
8
|
+
export async function updateWorkspaceCommand(ref, options) {
|
|
9
|
+
const workspace = await resolveWorkspaceRef(ref);
|
|
10
|
+
const args = {};
|
|
11
|
+
if (options.name !== undefined)
|
|
12
|
+
args.name = options.name;
|
|
13
|
+
if (options.description !== undefined)
|
|
14
|
+
args.description = options.description;
|
|
15
|
+
if (options.linkSharing !== undefined)
|
|
16
|
+
args.isLinkSharingEnabled = options.linkSharing;
|
|
17
|
+
if (options.guestAccess !== undefined)
|
|
18
|
+
args.isGuestAllowed = options.guestAccess;
|
|
19
|
+
if (options.domain !== undefined)
|
|
20
|
+
args.domainName = options.domain;
|
|
21
|
+
if (options.domainDiscovery !== undefined)
|
|
22
|
+
args.domainDiscovery = options.domainDiscovery;
|
|
23
|
+
if (options.restrictEmailDomains !== undefined) {
|
|
24
|
+
args.restrictEmailDomains = options.restrictEmailDomains;
|
|
25
|
+
}
|
|
26
|
+
if (options.collapsed !== undefined)
|
|
27
|
+
args.isCollapsed = options.collapsed;
|
|
28
|
+
// Guard no-op calls before the admin check — a user who forgot their
|
|
29
|
+
// flags should see NO_CHANGES, not NOT_ADMIN, since no mutation is
|
|
30
|
+
// actually being attempted.
|
|
31
|
+
if (Object.keys(args).length === 0) {
|
|
32
|
+
throw new CliError('NO_CHANGES', 'No changes specified.');
|
|
33
|
+
}
|
|
34
|
+
// Admin check runs BEFORE the dry-run short-circuit so a non-admin's
|
|
35
|
+
// preview still fails loudly — otherwise a dry-run would lie about
|
|
36
|
+
// what would happen.
|
|
37
|
+
assertWorkspaceAdmin(workspace, 'update');
|
|
38
|
+
if (options.dryRun) {
|
|
39
|
+
printDryRun('update workspace', {
|
|
40
|
+
Workspace: workspace.name,
|
|
41
|
+
Name: args.name,
|
|
42
|
+
Description: args.description ?? undefined,
|
|
43
|
+
'Link sharing': args.isLinkSharingEnabled !== undefined
|
|
44
|
+
? String(args.isLinkSharingEnabled)
|
|
45
|
+
: undefined,
|
|
46
|
+
'Guest access': args.isGuestAllowed !== undefined && args.isGuestAllowed !== null
|
|
47
|
+
? String(args.isGuestAllowed)
|
|
48
|
+
: undefined,
|
|
49
|
+
Domain: args.domainName ?? undefined,
|
|
50
|
+
'Domain discovery': args.domainDiscovery !== undefined ? String(args.domainDiscovery) : undefined,
|
|
51
|
+
'Restrict email domains': args.restrictEmailDomains !== undefined
|
|
52
|
+
? String(args.restrictEmailDomains)
|
|
53
|
+
: undefined,
|
|
54
|
+
Collapsed: args.isCollapsed !== undefined ? String(args.isCollapsed) : undefined,
|
|
55
|
+
});
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const api = await getApi();
|
|
59
|
+
const updated = await api.updateWorkspace(workspace.id, args);
|
|
60
|
+
clearWorkspaceCache();
|
|
61
|
+
if (options.json) {
|
|
62
|
+
// Re-fetch via sync so we emit the curated Workspace shape that
|
|
63
|
+
// `workspace view --json` uses — keeps the contract consistent for
|
|
64
|
+
// scripts that round-trip through read commands. Fall back to the
|
|
65
|
+
// raw SDK response if sync doesn't yet list it (shouldn't happen
|
|
66
|
+
// post-update, but be safe).
|
|
67
|
+
const refreshed = (await fetchWorkspaces()).find((w) => w.id === workspace.id);
|
|
68
|
+
console.log(JSON.stringify(refreshed ? formatWorkspaceJson(refreshed, options.full ?? false) : updated, null, 2));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (!isQuiet()) {
|
|
72
|
+
console.log(`Updated: ${workspace.name}${options.name && options.name !== workspace.name ? ` → ${updated.name}` : ''} (id:${workspace.id})`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/workspace/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface WorkspaceUserTasksOptions {
|
|
2
|
+
user?: string;
|
|
3
|
+
projectIds?: string;
|
|
4
|
+
json?: boolean;
|
|
5
|
+
ndjson?: boolean;
|
|
6
|
+
full?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function listWorkspaceUserTasks(ref: string, options: WorkspaceUserTasksOptions): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=user-tasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-tasks.d.ts","sourceRoot":"","sources":["../../../src/commands/workspace/user-tasks.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,yBAAyB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,wBAAsB,sBAAsB,CACxC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,yBAAyB,GACnC,OAAO,CAAC,IAAI,CAAC,CA8Ef"}
|