@uru-intelligence/cli 0.4.14 → 0.4.17

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 CHANGED
@@ -18,6 +18,8 @@
18
18
 
19
19
  ### Added
20
20
 
21
+ - A tool call that parks for approval now names itself, and uru tools approve <question-id> --accept|--decline answers it from the shell. — surfaces: cli; reference: URU-1362
22
+ - Action: A parked call prints its named status (approval_required or refused_by_policy), its question id, and its write class. Answer it with uru tools approve <question-id> --accept or --decline. The id is the durable approval row's own id, so the same answer settles the card in chat. Running the command twice is safe: it prints the answer that won.
21
23
  - Add `uru link --verify` for local link diagnostics and `uru gems links create --verify` to run browser verification after link creation. — surfaces: cli, docs; reference: apps/cli/src/workspace-commands.ts
22
24
  - Action: Use `uru link --verify` to confirm `.uru/project.json` and the remote Gem still resolve before source work. After `uru gems links create`, add `--verify` to run `gem.browser_verify` on the new Link's Gem.
23
25
  - Add a side-effect-free internal CLI library entrypoint with a typed whoami foundation. _(internal)_ — surfaces: cli, sdk; reference: docs/plans/cli-sdk-native-release-modernization/DECISION_RECORDS.md
@@ -40,6 +42,10 @@
40
42
  - Action: Use uru tools inspect <name> or uru operations inspect <operation-id> to print a contract. Pass --params-json @path.json or --params-json @- to load parameters from a file or stdin.
41
43
  - Make uru update compare this CLI to the latest npm version and add --check --json. — surfaces: cli; reference: apps/cli/src/update-check.ts
42
44
  - Action: No action is required. uru update never installs itself. Run uru update --check --json for machine output, or npm install -g @uru-intelligence/cli@latest to install.
45
+ - uru tools reads the whole tool catalog — platform, personal, adopted, company and external MCP — and runs a connector tool through the MCP proxy. — surfaces: cli, docs; reference: URU-1363
46
+ - Action: Name a tool by its <provider>.<owner>.<connection>.<tool> address; the flat <namespace>__<tool> wire name still resolves. Use uru tools search "<task>", uru tools ls, uru tools <partial address> --help, uru tools schema|inspect <address>, uru tools run <address> -d '{...}' with --get-schema, --dry-run or --parallel, and uru tools connections. Every refusal carries a name: no_match, catalog_unavailable, namespace_unavailable, not_connected, not_adopted, approval_required, refused_by_policy.
47
+ - uru tools search takes --offset, so a second page of matches no longer means re-reading the first. — surfaces: cli; reference: https://linear.app/uru-intelligence/issue/URU-1361
48
+ - Action: Pass --offset with the nextOffset the previous result printed. An offset past the end prints an empty page with the real total rather than refusing as no match.
43
49
 
44
50
  ### Changed
45
51
 
@@ -48,6 +54,10 @@
48
54
 
49
55
  ### Fixed
50
56
 
57
+ - A connector call the host parked or refused now reaches the shell with its status and its resumable question id, instead of a sentence the CLI had to read for the word approval. — surfaces: cli; reference: https://linear.app/uru-intelligence/issue/URU-1362
58
+ - Action: Answer a parked call with uru tools approve <question-id> --accept or --decline. The id is printed with the refusal.
59
+ - Clear automation runs-list usage when automation_id is missing, skip confirm on delete --preview, accept snake_case registry aliases, emit structured token create JSON, and register sharing.labels_list / sharing.label_create ops. — surfaces: cli, docs; reference: apps/cli/src/local-commands.ts
60
+ - Action: uru automations runs ls now requires <automation-id> and prints usage instead of an opaque schema error. Preview deletes no longer need --yes. Prefer published CLI >= 0.4.15 for labels aliases, snake_case registry params, and token create JSON id.
51
61
  - JSON output for destructive CLI operations refused without `--yes` now includes `confirmationRequired: true` and a copy-paste `suggestedCommand` with `--yes` appended. — surfaces: cli; reference: apps/cli/src/cli-runtime.ts
52
62
  - Action: No action is required. Agents and scripts can read `suggestedCommand` from JSON errors instead of guessing the confirmation flag.
53
63
  - Keep the CLI login when you switch workspace. A leftover workspace from a previous switch no longer poisons the next login. `uru switch` marks the current workspace in the list. — surfaces: cli; reference: apps/cli/src/oauth-credential.ts
@@ -62,6 +72,8 @@
62
72
  - Action: No action is required. `uru doctor` gains a `data access` check and fails when a credential validates but cannot execute tools; a token supplied through `--token` or `URU_TOKEN` is no longer told to run `uru login`.
63
73
  - Send scope on uru automations create, honor --output/--json on uru tools run, and keep errorId plus httpStatus on JSON errors. — surfaces: cli; reference: apps/cli/src/local-commands.ts
64
74
  - Action: uru automations create now sends scope=workspace by default. Pass --scope personal when creating a personal automation. JSON errors include errorId and httpStatus when the API provides them.
75
+ - Tip library_fs read refusals toward library_query, and ship labels/list aliases that need a live catalog with list_labels/create_label. — surfaces: cli, docs; reference: PR #5379 CF001; PR #5381 staging labels catalog
76
+ - Action: Prefer published CLI >= 0.4.15. Use uru sharing labels_list / label_create (or operations sharing.labels_list / sharing.label_create). library_fs read ops should point callers at library_query instead of an opaque safety refusal.
65
77
  - Use the shared SemVer contract when deciding whether to show a CLI update notice. — surfaces: cli, release; reference: docs/plans/cli-sdk-native-release-modernization/PLAN.md
66
78
  - Action: No action is required; prerelease and malformed registry versions now follow the same validation and ordering rules as release publication.
67
79
 
package/dist/library.mjs CHANGED
@@ -6846,6 +6846,7 @@ var zBulkPermissionsUpdateResponse = object({
6846
6846
  updatedCount: int()
6847
6847
  });
6848
6848
  var zCanonicalToolCatalogEntry = object({
6849
+ address: string2(),
6849
6850
  agentAliasFragment: string2().nullish(),
6850
6851
  agentVisibleNamespace: string2().nullish(),
6851
6852
  annotations: record(string2(), unknown()).nullish(),
@@ -6867,6 +6868,7 @@ var zCanonicalToolCatalogEntry = object({
6867
6868
  namespace: string2(),
6868
6869
  normalizedSubtoolName: string2(),
6869
6870
  outputSchema: record(string2(), unknown()).nullish(),
6871
+ owner: _enum(["platform", "personal", "adopted", "company"]),
6870
6872
  ownerUserId: uuid2().nullable(),
6871
6873
  personaLinkId: uuid2().nullish(),
6872
6874
  personaName: string2().nullish(),
@@ -6875,6 +6877,8 @@ var zCanonicalToolCatalogEntry = object({
6875
6877
  serviceSlug: string2(),
6876
6878
  sourceUserName: string2().nullish(),
6877
6879
  title: string2().nullish(),
6880
+ type: _enum(["platform", "composio", "managed_mcp", "external_mcp", "company"]),
6881
+ typeLabel: string2(),
6878
6882
  visibilitySource: string2().nullish(),
6879
6883
  workspaceId: uuid2().nullable(),
6880
6884
  wrapperToolName: string2()
@@ -16708,6 +16712,9 @@ var zListAvailableToolDefinitionsApiToolControlPlaneAvailableGetQuery = object({
16708
16712
  enabledOnly: _enum(["true", "false"]).optional().default("true")
16709
16713
  });
16710
16714
  var zListAvailableToolDefinitionsApiToolControlPlaneAvailableGetResponse = array(zToolDefinitionResponse);
16715
+ var zListCatalogApiToolControlPlaneCatalogGetHeaders = object({
16716
+ "X-Uru-Workspace-Id": string2().min(1).optional()
16717
+ });
16711
16718
  var zListCatalogApiToolControlPlaneCatalogGetQuery = object({
16712
16719
  enabledOnly: _enum(["true", "false"]).optional().default("true")
16713
16720
  });
@@ -16903,7 +16910,7 @@ function pickString(record2, keys) {
16903
16910
  // package.json
16904
16911
  var package_default = {
16905
16912
  name: "@uru-intelligence/cli",
16906
- version: "0.4.14",
16913
+ version: "0.4.17",
16907
16914
  private: false,
16908
16915
  description: "Uru full-platform command line interface",
16909
16916
  repository: {
@@ -16928,14 +16935,12 @@ var package_default = {
16928
16935
  access: "public"
16929
16936
  },
16930
16937
  scripts: {
16931
- lint: "node ../../scripts/run-with-repo-node.mjs oxlint --type-aware --deny-warnings -c ../../oxlint.inventory.config.mts .",
16932
- "lint:fix": "node ../../scripts/run-with-repo-node.mjs oxlint --type-aware --deny-warnings -c ../../oxlint.inventory.config.mts --fix .",
16938
+ lint: "node ../../scripts/run-with-repo-node.mjs oxlint --type-aware --deny-warnings -c ../../oxlint.config.mts .",
16939
+ "lint:fix": "node ../../scripts/run-with-repo-node.mjs oxlint --type-aware --deny-warnings -c ../../oxlint.config.mts --fix .",
16933
16940
  "type-check": "tsc --noEmit",
16934
16941
  test: "bun test",
16935
16942
  "test:unit": "bun test",
16936
- format: "prettier --write . --ignore-path ../../.prettierignore",
16937
- "format:check": "prettier --check . --ignore-path ../../.prettierignore",
16938
- ci: "bun run lint && bun run type-check && bun run test:unit && bun run docs:check && bun run changelog:check && bun run format:check && bun run build && bun run smoke:package && bun run smoke:binaries",
16943
+ ci: "bun run lint && bun run type-check && bun run test:unit && bun run docs:check && bun run changelog:check && bun run build && bun run smoke:package && bun run smoke:binaries",
16939
16944
  build: "node scripts/build.mjs",
16940
16945
  prepack: "bun run build",
16941
16946
  "docs:generate": "bun scripts/generate-docs.mjs",
@@ -17019,8 +17024,16 @@ function defaultCliErrorCode(exitCode) {
17019
17024
  }
17020
17025
  }
17021
17026
 
17022
- // src/oauth-credential.ts
17023
- var SESSION_REFRESH_LEEWAY_MS = 5 * 60 * 1000;
17027
+ // src/gem-panel-client.ts
17028
+ function stripTerminalControl(value) {
17029
+ let out = "";
17030
+ for (const ch of value) {
17031
+ const code = ch.codePointAt(0) ?? 0;
17032
+ const isControl = code < 32 && code !== 10 && code !== 9 || code === 127 || code >= 128 && code <= 159;
17033
+ out += isControl ? "�" : ch;
17034
+ }
17035
+ return out;
17036
+ }
17024
17037
 
17025
17038
  // ../../packages/types/src/mcp/gemResult.ts
17026
17039
  var GEM_RESULT_SCHEMA_V1 = "uru.gem.result.v1";
@@ -17086,16 +17099,8 @@ function requiredString(record2, key, label) {
17086
17099
  return value;
17087
17100
  }
17088
17101
 
17089
- // src/gem-panel-client.ts
17090
- function stripTerminalControl(value) {
17091
- let out = "";
17092
- for (const ch of value) {
17093
- const code = ch.codePointAt(0) ?? 0;
17094
- const isControl = code < 32 && code !== 10 && code !== 9 || code === 127 || code >= 128 && code <= 159;
17095
- out += isControl ? "�" : ch;
17096
- }
17097
- return out;
17098
- }
17102
+ // src/oauth-credential.ts
17103
+ var SESSION_REFRESH_LEEWAY_MS = 5 * 60 * 1000;
17099
17104
 
17100
17105
  // src/client.ts
17101
17106
  class UruApiClient {