aipctl 2026.9.11 → 2026.10.1

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/build/index.cjs CHANGED
@@ -89670,7 +89670,7 @@ const injectedBuildEnv = "dev".length > 0 ? "dev" : "local";
89670
89670
  if (!isBuildEnv(injectedBuildEnv)) {
89671
89671
  throw new Error(`Invalid AIPCTL_BUILD_ENV: ${injectedBuildEnv}`);
89672
89672
  }
89673
- const VERSION = "2026.9.11".length > 0 ? "2026.9.11" : "0.0.0";
89673
+ const VERSION = "2026.10.1".length > 0 ? "2026.10.1" : "0.0.0";
89674
89674
  const BUILD_ENV = injectedBuildEnv;
89675
89675
  const INCLUDE_NATIVE_LOGS = BUILD_ENV !== "prod";
89676
89676
 
@@ -89732,6 +89732,19 @@ const isNativeCommandEnabled = (command, includeLogs = INCLUDE_NATIVE_LOGS) => {
89732
89732
  const FORCED_ARGS_SEPARATOR = "--";
89733
89733
  const NATIVE_ROOT_COMMANDS = new Set(nativeCommandNames);
89734
89734
  const trailingOptionSpecs = [
89735
+ ...["list", "get"].map((command) => ({
89736
+ command: ["automation", command],
89737
+ booleanOptions: /* @__PURE__ */ new Set(["--json"]),
89738
+ valueOptions: /* @__PURE__ */ new Set(["--org", ...command === "list" ? ["--name"] : []]),
89739
+ explicitBooleanValues: true
89740
+ })),
89741
+ {
89742
+ command: ["automation", "delete"],
89743
+ booleanOptions: /* @__PURE__ */ new Set(["--force", "-f"]),
89744
+ valueOptions: /* @__PURE__ */ new Set(["--org"]),
89745
+ explicitBooleanValues: true,
89746
+ booleanAliases: { "-f": "--force" }
89747
+ },
89735
89748
  {
89736
89749
  command: ["drive", "delete"],
89737
89750
  booleanOptions: /* @__PURE__ */ new Set(["--force", "-f"]),
@@ -89766,6 +89779,19 @@ const normalizeTrailingOptions = (args, spec) => {
89766
89779
  if (arg === void 0) {
89767
89780
  continue;
89768
89781
  }
89782
+ if (spec.explicitBooleanValues && spec.booleanOptions.has(getOptionName(arg))) {
89783
+ const nextArg = args[index + 1];
89784
+ const optionName = spec.booleanAliases?.[getOptionName(arg)] ?? getOptionName(arg);
89785
+ if (arg.includes("=")) {
89786
+ options.push(`${optionName}${arg.slice(arg.indexOf("="))}`);
89787
+ } else if (nextArg === "true" || nextArg === "false") {
89788
+ options.push(`${optionName}=${nextArg}`);
89789
+ index += 1;
89790
+ } else {
89791
+ options.push(`${optionName}=true`);
89792
+ }
89793
+ continue;
89794
+ }
89769
89795
  if (isBooleanOption(arg, spec)) {
89770
89796
  options.push(arg);
89771
89797
  continue;
@@ -89844,7 +89870,15 @@ const implementedCommandOperationIds = /* @__PURE__ */ new Set([
89844
89870
  "listCliIntegrations",
89845
89871
  "listCliAvailableIntegrations",
89846
89872
  "getCliAdminIntegration",
89847
- "listCliIntegrationTools"
89873
+ "listCliIntegrationTools",
89874
+ "listCliAutomations",
89875
+ "getCliAutomation",
89876
+ "listCliAutomationTriggers",
89877
+ "listCliAutomationHistory",
89878
+ "createCliAutomation",
89879
+ "updateCliAutomation",
89880
+ "deleteCliAutomation",
89881
+ "updateCliAutomationStatus"
89848
89882
  ]);
89849
89883
  const releaseEnabledCommandOperationIds = /* @__PURE__ */ new Set([
89850
89884
  "listCliAgents",
@@ -89886,7 +89920,15 @@ const releaseEnabledCommandOperationIds = /* @__PURE__ */ new Set([
89886
89920
  "listCliIntegrations",
89887
89921
  "listCliAvailableIntegrations",
89888
89922
  "getCliAdminIntegration",
89889
- "listCliIntegrationTools"
89923
+ "listCliIntegrationTools",
89924
+ "listCliAutomations",
89925
+ "getCliAutomation",
89926
+ "listCliAutomationTriggers",
89927
+ "listCliAutomationHistory",
89928
+ "createCliAutomation",
89929
+ "updateCliAutomation",
89930
+ "deleteCliAutomation",
89931
+ "updateCliAutomationStatus"
89890
89932
  ]);
89891
89933
  const direct = (commands, operation) => commands.map((command) => ({
89892
89934
  command,
@@ -93891,6 +93933,10 @@ function maskSensitiveData(value, options = {}, context = {}) {
93891
93933
  const shouldUseMaskedCommand = typeof record.command === "string" && typeof record.maskedCommand === "string";
93892
93934
  for (const [key, entry] of Object.entries(record)) {
93893
93935
  const normalizedKey = normalizeKey(key);
93936
+ if (normalizedKey === "secretconfigured" && typeof entry === "boolean" && !context.forceMaskPrimitives) {
93937
+ masked[key] = entry;
93938
+ continue;
93939
+ }
93894
93940
  if (normalizedKey === COMMAND_KEY && shouldUseMaskedCommand) {
93895
93941
  masked[key] = record.maskedCommand;
93896
93942
  continue;
@@ -94622,24 +94668,8 @@ function resolveTriggerMetadataRequest(triggerProviderType, options = {}) {
94622
94668
  }
94623
94669
  }
94624
94670
  function buildTriggerProviderMetadataPath(orgSlug, request) {
94625
- const basePath = `/api/web/organizations/slug/${encodeURIComponent(orgSlug)}/automation-trigger-providers`;
94626
- switch (request.triggerProviderType) {
94627
- case "GMAIL":
94628
- case "OUTLOOK": {
94629
- const params = new URLSearchParams({ accountId: request.options.accountId });
94630
- return `${basePath}/${encodeURIComponent(request.triggerProviderType)}/metadata?${params.toString()}`;
94631
- }
94632
- case "google-drive":
94633
- case "box": {
94634
- const params = new URLSearchParams({
94635
- accountId: request.options.accountId,
94636
- folderId: request.options.folderId
94637
- });
94638
- return `${basePath}/${encodeURIComponent(request.triggerProviderType)}/metadata?${params.toString()}`;
94639
- }
94640
- case "webhook":
94641
- return `${basePath}/webhook/${encodeURIComponent(request.options.serviceType)}/metadata`;
94642
- }
94671
+ const params = new URLSearchParams({ type: request.triggerProviderType, ...request.options });
94672
+ return `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/automations/triggers?${params.toString()}`;
94643
94673
  }
94644
94674
  function normalizeSharedUserList(sharedUserList) {
94645
94675
  return sharedUserList?.map((user, index) => {
@@ -95363,11 +95393,12 @@ const makeApiServiceLive = (buildEnv) => effect$1(
95363
95393
  // Phase 3: Automation
95364
95394
  listAutomations: (orgSlug, options) => gen(function* () {
95365
95395
  const token = yield* getAccessToken();
95396
+ yield* requireReleaseEnabledOperation("listCliAutomations");
95366
95397
  const params = new URLSearchParams();
95367
95398
  params.set("pageNumber", String(options?.pageNumber ?? 1));
95368
95399
  params.set("pageSize", String(options?.pageSize ?? 50));
95369
95400
  if (options?.name) params.set("name", options.name);
95370
- const path = `/api/web/organizations/slug/${encodeURIComponent(orgSlug)}/automations?${params.toString()}`;
95401
+ const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/automations?${params.toString()}`;
95371
95402
  const response = yield* makeRequest(baseUrl, path, token);
95372
95403
  return {
95373
95404
  ...response,
@@ -95381,18 +95412,20 @@ const makeApiServiceLive = (buildEnv) => effect$1(
95381
95412
  }),
95382
95413
  updateAutomationStatus: (orgSlug, automationId, status) => gen(function* () {
95383
95414
  const token = yield* getAccessToken();
95384
- const path = `/api/web/organizations/slug/${encodeURIComponent(orgSlug)}/automations/${encodeURIComponent(automationId)}/change-status`;
95415
+ yield* requireReleaseEnabledOperation("updateCliAutomationStatus");
95416
+ const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/automations/${encodeURIComponent(automationId)}/status`;
95385
95417
  return yield* makeRequest(baseUrl, path, token, {
95386
- method: "POST",
95418
+ method: "PATCH",
95387
95419
  body: { status }
95388
95420
  });
95389
95421
  }),
95390
95422
  listAutomationHistories: (orgSlug, automationId, options) => gen(function* () {
95391
95423
  const token = yield* getAccessToken();
95424
+ yield* requireReleaseEnabledOperation("listCliAutomationHistory");
95392
95425
  const params = new URLSearchParams();
95393
95426
  params.set("pageNumber", String(options?.pageNumber ?? 1));
95394
95427
  params.set("pageSize", String(options?.pageSize ?? 20));
95395
- const path = `/api/web/organizations/slug/${encodeURIComponent(orgSlug)}/automations/${encodeURIComponent(automationId)}/histories?${params.toString()}`;
95428
+ const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/automations/${encodeURIComponent(automationId)}/history?${params.toString()}`;
95396
95429
  const response = yield* makeRequest(baseUrl, path, token);
95397
95430
  return {
95398
95431
  ...response,
@@ -95401,12 +95434,14 @@ const makeApiServiceLive = (buildEnv) => effect$1(
95401
95434
  }),
95402
95435
  getAutomation: (orgSlug, automationId) => gen(function* () {
95403
95436
  const token = yield* getAccessToken();
95404
- const path = `/api/web/organizations/slug/${encodeURIComponent(orgSlug)}/automations/${encodeURIComponent(automationId)}`;
95437
+ yield* requireReleaseEnabledOperation("getCliAutomation");
95438
+ const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/automations/${encodeURIComponent(automationId)}`;
95405
95439
  return yield* makeRequest(baseUrl, path, token);
95406
95440
  }),
95407
95441
  createAutomation: (orgSlug, body) => gen(function* () {
95408
95442
  const token = yield* getAccessToken();
95409
- const path = `/api/web/organizations/slug/${encodeURIComponent(orgSlug)}/automations`;
95443
+ yield* requireReleaseEnabledOperation("createCliAutomation");
95444
+ const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/automations`;
95410
95445
  return yield* makeRequest(baseUrl, path, token, {
95411
95446
  method: "POST",
95412
95447
  body
@@ -95414,7 +95449,8 @@ const makeApiServiceLive = (buildEnv) => effect$1(
95414
95449
  }),
95415
95450
  updateAutomation: (orgSlug, automationId, body) => gen(function* () {
95416
95451
  const token = yield* getAccessToken();
95417
- const path = `/api/web/organizations/slug/${encodeURIComponent(orgSlug)}/automations/${encodeURIComponent(automationId)}`;
95452
+ yield* requireReleaseEnabledOperation("updateCliAutomation");
95453
+ const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/automations/${encodeURIComponent(automationId)}`;
95418
95454
  return yield* makeRequest(baseUrl, path, token, {
95419
95455
  method: "PUT",
95420
95456
  body
@@ -95422,7 +95458,8 @@ const makeApiServiceLive = (buildEnv) => effect$1(
95422
95458
  }),
95423
95459
  deleteAutomation: (orgSlug, automationId) => gen(function* () {
95424
95460
  const token = yield* getAccessToken();
95425
- const path = `/api/web/organizations/slug/${encodeURIComponent(orgSlug)}/automations/${encodeURIComponent(automationId)}`;
95461
+ yield* requireReleaseEnabledOperation("deleteCliAutomation");
95462
+ const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/automations/${encodeURIComponent(automationId)}`;
95426
95463
  return yield* makeRequest(baseUrl, path, token, { method: "DELETE" });
95427
95464
  }),
95428
95465
  cancelAutomationHistory: (orgSlug, automationId, historySeq) => gen(function* () {
@@ -95783,6 +95820,7 @@ const makeApiServiceLive = (buildEnv) => effect$1(
95783
95820
  }),
95784
95821
  getTriggerProviderMetadata: (orgSlug, triggerProviderType, options) => gen(function* () {
95785
95822
  const token = yield* getAccessToken();
95823
+ yield* requireReleaseEnabledOperation("listCliAutomationTriggers");
95786
95824
  const request = yield* try_({
95787
95825
  try: () => resolveTriggerMetadataRequest(triggerProviderType, options),
95788
95826
  catch: (error) => apiErrorFromUnknown(error, "Invalid trigger provider metadata request")
@@ -53,7 +53,8 @@
53
53
  | P0-AGENT-02 | agent-admin | `aipctl admin agent create`, `update`, `delete`, `share`, `templates`; `aipctl agent enable`, `disable` | `createInstalledAgent`, `updateInstalledAgent`, `deleteInstalledAgent`, `getInstalledAgentShare`, `listAgentTemplates`, `updateInstalledAgentStatus` | api | `POST`, `PATCH`, `DELETE`, `GET`, `GET`, `PATCH` | `/api/cli/v1/organizations/{organizationSlug}/agents`; `/{installedAgentId}`; `/{installedAgentId}/share`; `/templates`; `/{installedAgentId}/status` | existing create/update/status bodies; templates collect bounded pages and retain the full catalog; share is read-only | create/update `{ id }`, void mutation responses, existing CLI template/share mapping | `resource/oas/modules/backend/cli/openapi.yaml`; shared legacy DTO refs | `backend/api/.../cli/generated/api/CliAgentApi.kt` | `generated-ready` | `P0` | `migrate` | none; AI operator/workflow/audit policy stays in existing domain owner | `AI-6344` | all eight operations capability/path tests, mutation non-replay, template paging, real CLI lifecycle/DB/audit and metadata 429 verification |
54
54
  | P0-AGENT-03 | agent-export | `aipctl admin agent export` (GA-CANDIDATE, production gated) | `exportInstalledAgent` | api | `GET` | `/web/admin/organizations/slug/{organizationSlug}/installed-agents/{installedAgentId}/export` | existing direct controller request | YAML `Buffer` | `backend/api/.../app/controller/AgentExportController.kt`; intentionally OAS-codegen excluded | none | `legacy-generated` | `P0` | `legacy-exception` | owner=`AgentExportController`; dedicated transfer contract, size/timeout/partial-file/authorization/audit gates remain | `AI-6380` | existing direct export path/Buffer/404 tests; production help remains hidden |
55
55
  | P1-CHAT-01 | agent-chat | `aipctl agent chat` | `agentNewChat`, `agentChat`, local `parseSseStream` | chat | `POST` + SSE | `/librechat/api/{orgSlug}/agent/new-chat`; `/librechat/api/{orgSlug}/agent/chat` | request body `{ agentInstallationId or conversationId, text, files: [] }` | local `AgentChatResult { text, conversationId }` parsed from SSE event fields `final`, `conversation.conversationId`, `responseMessage` | path source: `resource/oas/chat.yaml` | `frontend/packages/api/src/out/chat-types.ts#paths["/librechat/api/{orgSlug}/agent/new-chat"]`, `#paths["/librechat/api/{orgSlug}/agent/chat"]` | `stream-exception` | `P1` | `legacy-exception` | owner=`chat backend agent SSE stream contract`; rationale=`path exists in OpenAPI but final SSE event payload is still out-of-band`; removal condition=`official SSE event schema or versioned fixture is published with the chat contract`; incorporation plan=`bind CLI parser/tests to the published SSE fixture and drop local-only stream assumptions` | N/A | updated `src/core/api.test.ts`; covers content[] text, fallback text, malformed event skip, and no-final-event failure |
56
- | P1-AUTO-01 | automation | `aipctl automation list`, `get`, `create`, `update`, `delete`, `run`, `enable`, `disable`, `history`, `cancel`, `webhook-regen`, `triggers` | `listAutomations`, `getAutomation`, `createAutomation`, `updateAutomation`, `deleteAutomation`, `runAutomation`, `updateAutomationStatus`, `listAutomationHistories`, `cancelAutomationHistory`, `regenerateWebhookUrl`, `getTriggerProviderMetadata` | api | `GET`, `POST`, `PUT`, `DELETE` mix | `/api/web/organizations/slug/{organizationSlug}/automations...`; `/automation-trigger-providers/.../metadata` | automation pagination normalized to `{ page, pageSize, total }`; metadata calls now use provider-specific OAS paths and required args (`accountId`, `folderId`, `serviceType`) | local automation DTOs + webhook URL DTO | `resource/oas/modules/backend/automation/user/openapi.yaml` | `frontend/packages/api/src/out/modules/automation-user-types.ts#paths[...]` | `generated-ready` | `P1` | `keep` | none | N/A | updated `src/core/api.test.ts`, `commands/automation/automation.test.ts`, `commands/json-format.test.ts`; covers official pagination fields, provider-specific metadata routes, and unsupported-provider preflight failure |
56
+ | P1-AUTO-01 | automation | `aipctl automation list`, `get`, `create`, `update`, `delete`, `enable`, `disable`, `history`, `triggers` | `listAutomations`, `getAutomation`, `createAutomation`, `updateAutomation`, `deleteAutomation`, `updateAutomationStatus`, `listAutomationHistories`, `getTriggerProviderMetadata` | api | `GET`, `POST`, `PUT`, `DELETE`, `PATCH` | `/api/cli/v1/organizations/{organizationSlug}/automations`; `/{automationId}`; `/{automationId}/status`; `/{automationId}/history`; `/triggers?type=...` | one-based pageNumber/pageSize (1..100); status `{ status }`; exactly one matching trigger branch; metadata retains required accountId/folderId/serviceType input | existing list/history domain DTOs; dedicated `GetCliAutomationResponse` and ID DTO; webhook detail only serviceType/boolean secretConfigured | `resource/oas/modules/backend/cli/openapi.yaml` → `v1_automations*.yaml`; request/list/history aliases reuse Automation user schemas | `backend/api/.../cli/generated/api/CliAutomationApi.kt` | `generated-ready` | `P1` | `migrate` | owner=`CLI Automation adapter`; Schedule/Webhook/My Drive management enabled; external account provider metadata/mutations return 403 before provider side effects; stored external detail never enriches remotely or fabricates account/folder validity | `AI-6344`; external lifecycle gate `AI-6380`; large pagination gate `AI-6413` | `src/core/automation-contract.test.ts`, `src/core/api.test.ts`, Automation command tests, `redaction.test.ts`, Backend safe-read/controller/audit tests, Gateway parity; real mise servers + production CLI CRUD/ownership/pagination/quota/DB/audit |
57
+ | P1-AUTO-02 | automation-execution | `aipctl automation run`, `cancel`, `webhook-regen` (GA-CANDIDATE, production gated) | `runAutomation`, `cancelAutomationHistory`, `regenerateWebhookUrl` | api | `POST`, `DELETE`, `POST` | legacy `/api/web/organizations/slug/{organizationSlug}/automations/{automationId}/run`; `/histories/{seq}`; `/webhook-url/regen` | existing domain input | existing execution/history/webhook URL DTO | `resource/oas/modules/backend/automation/user/openapi.yaml` | `frontend/packages/api/src/out/modules/automation-user-types.ts#paths[...]` | `generated-ready` | `P1` | `legacy-exception` | owner=`Automation execution domain`; requires execution quota, idempotency/cancel lifetime, webhook secret rotation and safe output verification before customer enablement | `AI-6380` | existing legacy path/command tests; production availability keeps all three hidden |
57
58
  | CHAT-01 | chat-readonly | `aipctl chat list`, `aipctl chat get`, `aipctl chat messages` | `listConversations`, `getConversation`, `listMessages` | chat | `GET` | `/api/cli/v1/organizations/{orgSlug}/chats`; `/chats/{conversationId}`; `/chats/{conversationId}/messages` | list sends optional cursor; server fixes bounded `updatedAt desc` page size; detail/messages preserve organization and user ownership | local `ListConversationsResponse`, `ConversationDetail`, `ChatMessage[]` | `chat/packages/chat/src/modules/cli-chat/interface/cli-chat-read-v1.interface.controller.ts` | code-first controller contract with `operationId`/quota/capability extensions; no generated backend artifact | `oas-source-only` | `P0` | `migrate` | none; `CliChatReadInterfaceService` reuses the existing conversation/message ownership services and returns CLI-safe fields only | `AI-6344` | updated `src/core/api.test.ts`, Chat read service spec, Gateway registry/contract parity; local CLI/Chat verification covers cursor and no legacy fallback |
58
59
  | P0-DRIVE-01 | drive | `aipctl drive list`, `download`, `delete`, `mkdir`, `rename`, `usage` | `listDriveEntries`, `getDriveDownloadUrl`, `deleteDriveEntries`, `createDriveFolder`, `renameDriveEntry`, `getDriveUsage`, `downloadFromUrl` | api + external | `GET`, `POST`, `POST`, `POST`, `PATCH`, `GET`, external `GET` | CLI-managed basic CRUD: `/api/cli/v1/organizations/{organizationSlug}/drive/entries?count=200`, `/drive/entries/delete`, `/drive/folders`, `/drive/entries/{entryId}`, `/drive/usage`; download/upload remain Web/presigned | official list `{ path, hasNext, nextCursor, items }`; delete body `{ entryIds[] }`; mkdir optional `parentId`; rename body `{ newName }`; download body `{ entryIds: [id] }` | official drive list/download DTOs + external file buffer | `resource/oas/modules/backend/cli/openapi.yaml` → `v1_drive_*.yaml` (DTO aliases to organization Storage OAS); download/upload remain `resource/oas/modules/backend/organization/storage/openapi.yaml` | `backend/api/.../cli/generated/api/CliDriveApi.kt`; domain DTOs remain `com.querypie.duplo.api.drive.controller.generated.model.*` | `generated-ready` | `P0` | `migrate` | none; `CliDriveApiController` delegates membership, capacity and audit owner | `AI-6344` | `src/core/api.test.ts`, `CliSkillDriveApiControllerTest`, Gateway registry/contract parity; production CRUD/usage and local 403/404 checks (401/429 remain common gates) |
59
60
  | P0-DRIVE-02 | drive | `aipctl drive upload` | `createDriveUploadUrl` → `uploadToS3` → `completeDriveUpload` | api + external | `POST` → `PUT` → `POST` | `/drive/entries/upload-url`; external presigned `uploadUrl`; `/drive/entries/{entryId}/complete` | official upload request `{ parentId: null, filename, fileSize, mimeType }` | official `CreateDriveUploadUrlResponse { id, filename, uploadUrl, headers }` then `void` | `resource/oas/modules/backend/organization/storage/openapi.yaml` | `frontend/packages/api/src/out/modules/organization-storage-types.ts#paths["/api/web/organizations/slug/{organizationSlug}/drive/entries/upload-url"]`, `#paths["/api/web/organizations/slug/{organizationSlug}/drive/entries/{entryId}/complete"]` | `generated-ready` | `P0` | `migrate` | none | `AIP-PUB-05` | updated `src/core/api.test.ts`, `commands/drive/drive.test.ts`; covers `parentId: null` request and response `id`/`filename` usage |
@@ -96,7 +97,7 @@ CLI `ApiError`는 위 여섯 code에서 allowlist된 quota detail만 보존하
96
97
  ### P1 queue
97
98
 
98
99
  - `P1-INT-01` integration legacy-exception documented; current/legacy path+DTO tests added
99
- - `P1-AUTO-01` automation pagination/trigger metadata alignment done
100
+ - `P1-AUTO-01` Automation management uses eight dedicated v1 operations; Schedule/Webhook/My Drive lifecycle and stored safe reads are implemented. External provider metadata/mutations and `P1-AUTO-02` remain gated.
100
101
  - `P1-PRESET-01` preset admin namespace/docs + legacy path tests done
101
102
  - `P1-SKILL-01` skill JSON/help/docs field sync done
102
103
  - `P1-CHAT-01` chat SSE fixture tests added for final/fallback/error cases
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aipctl",
3
- "version": "2026.9.11",
3
+ "version": "2026.10.1",
4
4
  "description": "QueryPie AIP and MCP CLI tool",
5
5
  "author": "QueryPie",
6
6
  "license": "UNLICENSED",
@@ -22,8 +22,8 @@
22
22
  "node": ">=24.18.0"
23
23
  },
24
24
  "metadata": {
25
- "contentHash": "3ba1c423da1af4ecb2cfea8ed116569d9a97e579727ca173bd87fd17a77cdd32",
26
- "wrapperHash": "40c7bf7e201612bd3435325d09cd6eebe577f5e56184f8e2c0f0a0b0bfa58368",
25
+ "contentHash": "ea5c348d28e6d1e64655c97b08350c4e9b14572c4474243a654e18c2b6bb7917",
26
+ "wrapperHash": "03b7520e6526fd395045d78d3a17ba20bf875e10cd352306b5417a3b63ed384c",
27
27
  "nativeHash": "006b08c3e391f4571d9b7c0f12d684fe2448106259e7e0581b10f9be362452e9"
28
28
  },
29
29
  "optionalDependencies": {