aipctl 2026.9.10 → 2026.9.11
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 +32 -12
- package/docs/api-contract-inventory.md +2 -2
- package/package.json +3 -3
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.
|
|
89673
|
+
const VERSION = "2026.9.11".length > 0 ? "2026.9.11" : "0.0.0";
|
|
89674
89674
|
const BUILD_ENV = injectedBuildEnv;
|
|
89675
89675
|
const INCLUDE_NATIVE_LOGS = BUILD_ENV !== "prod";
|
|
89676
89676
|
|
|
@@ -89837,7 +89837,14 @@ const implementedCommandOperationIds = /* @__PURE__ */ new Set([
|
|
|
89837
89837
|
"getCliDriveUsage",
|
|
89838
89838
|
"createCliDriveFolder",
|
|
89839
89839
|
"updateCliDriveEntryName",
|
|
89840
|
-
"deleteCliDriveEntries"
|
|
89840
|
+
"deleteCliDriveEntries",
|
|
89841
|
+
"listCliChats",
|
|
89842
|
+
"getCliChat",
|
|
89843
|
+
"listCliChatMessages",
|
|
89844
|
+
"listCliIntegrations",
|
|
89845
|
+
"listCliAvailableIntegrations",
|
|
89846
|
+
"getCliAdminIntegration",
|
|
89847
|
+
"listCliIntegrationTools"
|
|
89841
89848
|
]);
|
|
89842
89849
|
const releaseEnabledCommandOperationIds = /* @__PURE__ */ new Set([
|
|
89843
89850
|
"listCliAgents",
|
|
@@ -89872,7 +89879,14 @@ const releaseEnabledCommandOperationIds = /* @__PURE__ */ new Set([
|
|
|
89872
89879
|
"getCliDriveUsage",
|
|
89873
89880
|
"createCliDriveFolder",
|
|
89874
89881
|
"updateCliDriveEntryName",
|
|
89875
|
-
"deleteCliDriveEntries"
|
|
89882
|
+
"deleteCliDriveEntries",
|
|
89883
|
+
"listCliChats",
|
|
89884
|
+
"getCliChat",
|
|
89885
|
+
"listCliChatMessages",
|
|
89886
|
+
"listCliIntegrations",
|
|
89887
|
+
"listCliAvailableIntegrations",
|
|
89888
|
+
"getCliAdminIntegration",
|
|
89889
|
+
"listCliIntegrationTools"
|
|
89876
89890
|
]);
|
|
89877
89891
|
const direct = (commands, operation) => commands.map((command) => ({
|
|
89878
89892
|
command,
|
|
@@ -95586,7 +95600,8 @@ const makeApiServiceLive = (buildEnv) => effect$1(
|
|
|
95586
95600
|
}),
|
|
95587
95601
|
listIntegrations: (orgSlug) => gen(function* () {
|
|
95588
95602
|
const token = yield* getAccessToken();
|
|
95589
|
-
|
|
95603
|
+
yield* requireReleaseEnabledOperation("listCliIntegrations");
|
|
95604
|
+
const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/integrations`;
|
|
95590
95605
|
return yield* makeRequest(baseUrl, path, token);
|
|
95591
95606
|
}),
|
|
95592
95607
|
testIntegration: (orgSlug, integrationId) => gen(function* () {
|
|
@@ -95608,22 +95623,25 @@ const makeApiServiceLive = (buildEnv) => effect$1(
|
|
|
95608
95623
|
listConversations: (orgSlug, options) => gen(function* () {
|
|
95609
95624
|
yield* requireChatBaseUrlEffect();
|
|
95610
95625
|
const token = yield* getAccessToken();
|
|
95626
|
+
yield* requireReleaseEnabledOperation("listCliChats");
|
|
95611
95627
|
const params = new URLSearchParams();
|
|
95612
95628
|
if (options?.cursor) params.set("cursor", options.cursor);
|
|
95613
95629
|
const query = params.toString();
|
|
95614
|
-
const path = `/
|
|
95630
|
+
const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/chats${query ? `?${query}` : ""}`;
|
|
95615
95631
|
return yield* makeRequest(chatBaseUrl, path, token);
|
|
95616
95632
|
}),
|
|
95617
95633
|
getConversation: (orgSlug, conversationId) => gen(function* () {
|
|
95618
95634
|
yield* requireChatBaseUrlEffect();
|
|
95619
95635
|
const token = yield* getAccessToken();
|
|
95620
|
-
|
|
95636
|
+
yield* requireReleaseEnabledOperation("getCliChat");
|
|
95637
|
+
const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/chats/${encodeURIComponent(conversationId)}`;
|
|
95621
95638
|
return yield* makeRequest(chatBaseUrl, path, token);
|
|
95622
95639
|
}),
|
|
95623
95640
|
listMessages: (orgSlug, conversationId) => gen(function* () {
|
|
95624
95641
|
yield* requireChatBaseUrlEffect();
|
|
95625
95642
|
const token = yield* getAccessToken();
|
|
95626
|
-
|
|
95643
|
+
yield* requireReleaseEnabledOperation("listCliChatMessages");
|
|
95644
|
+
const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/chats/${encodeURIComponent(conversationId)}/messages`;
|
|
95627
95645
|
return yield* makeRequest(chatBaseUrl, path, token);
|
|
95628
95646
|
}),
|
|
95629
95647
|
sendChatMessage: (orgSlug, body) => gen(function* () {
|
|
@@ -95778,7 +95796,8 @@ const makeApiServiceLive = (buildEnv) => effect$1(
|
|
|
95778
95796
|
// Integration CRUD
|
|
95779
95797
|
getIntegration: (orgSlug, id) => gen(function* () {
|
|
95780
95798
|
const token = yield* getAccessToken();
|
|
95781
|
-
|
|
95799
|
+
yield* requireReleaseEnabledOperation("getCliAdminIntegration");
|
|
95800
|
+
const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/admin/integrations/${encodeURIComponent(id)}`;
|
|
95782
95801
|
const response = yield* makeRequest(baseUrl, path, token);
|
|
95783
95802
|
return {
|
|
95784
95803
|
...response,
|
|
@@ -95798,14 +95817,15 @@ const makeApiServiceLive = (buildEnv) => effect$1(
|
|
|
95798
95817
|
}),
|
|
95799
95818
|
listIntegrationTools: (orgSlug, id) => gen(function* () {
|
|
95800
95819
|
const token = yield* getAccessToken();
|
|
95801
|
-
|
|
95820
|
+
yield* requireReleaseEnabledOperation("listCliIntegrationTools");
|
|
95821
|
+
const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/admin/integrations/${encodeURIComponent(id)}/tools`;
|
|
95802
95822
|
return yield* makeRequest(baseUrl, path, token);
|
|
95803
95823
|
}),
|
|
95804
95824
|
listConfigurableIntegrations: (orgSlug) => gen(function* () {
|
|
95805
95825
|
const token = yield* getAccessToken();
|
|
95806
|
-
|
|
95807
|
-
const
|
|
95808
|
-
return
|
|
95826
|
+
yield* requireReleaseEnabledOperation("listCliAvailableIntegrations");
|
|
95827
|
+
const path = `/api/cli/v1/organizations/${encodeURIComponent(orgSlug)}/admin/integrations/available`;
|
|
95828
|
+
return yield* makeRequest(baseUrl, path, token);
|
|
95809
95829
|
}),
|
|
95810
95830
|
// Audit event types
|
|
95811
95831
|
listAuditEventTypes: () => gen(function* () {
|
|
@@ -54,10 +54,10 @@
|
|
|
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
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 |
|
|
57
|
-
| CHAT-01 | chat-readonly | `aipctl chat list`, `aipctl chat get`, `aipctl chat messages` | `listConversations`, `getConversation`, `listMessages` | chat | `GET` | `/
|
|
57
|
+
| 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
58
|
| 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
59
|
| 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 |
|
|
60
|
-
| P1-INT-01 | integration | `aipctl integration list`, `test`; `aipctl admin integration get`, `update`, `delete`, `tools`, `available` | `listIntegrations`, `testIntegration`, `getIntegration`, `updateIntegration`, `deleteIntegration`, `listIntegrationTools`, `listConfigurableIntegrations` | api | `GET`, `POST`, `GET`, `PUT`, `DELETE`, `GET`, `GET` | `/api/
|
|
60
|
+
| P1-INT-01 | integration | `aipctl integration list`, `test`; `aipctl admin integration get`, `update`, `delete`, `tools`, `available` | `listIntegrations`, `testIntegration`, `getIntegration`, `updateIntegration`, `deleteIntegration`, `listIntegrationTools`, `listConfigurableIntegrations` | api | `GET`, `POST`, `GET`, `PUT`, `DELETE`, `GET`, `GET` | read operations use `/api/cli/v1/organizations/{organizationSlug}/integrations`; `/admin/integrations/available`; `/admin/integrations/{integrationId}`; `/tools`; mutations/test remain legacy candidate paths | read responses use dedicated CLI DTOs; admin detail maps only metadata and configured boolean, never property descriptors or credential values; update/delete/test remain unchanged | local `Integration`, `IntegrationDetail`, `IntegrationToolsResponse`, `ConfigurableIntegration[]` | `resource/oas/modules/backend/cli/openapi.yaml` → `v1_integrations*.yaml` | `backend/api/.../cli/generated/api/CliIntegrationApi.kt`; generated `Cli*Integration*` models | `generated-ready` | `P1` | `migrate` | owner=`backend CLI integration adapter`; rationale=`read-only operations now have a stable v1 contract while external test and mutations retain candidate gates`; removal condition=`dedicated test/mutation contracts pass timeout, redaction and idempotency gates`; incorporation plan=`follow AI-6380 candidate work` | `AI-6344` | updated `src/core/api.test.ts`, Backend adapter/security tests, Gateway registry/contract parity; local CLI read verification and legacy mutation path regression |
|
|
61
61
|
| P0-MODEL-01 | model | `aipctl model list` | `listModels` | chat | `GET` | `/api/cli/v1/organizations/{orgSlug}/models` | none | `{ models: string[], defaultModel? }` is mapped into `Model[]` and preserves active standard, custom/BYOK, and `etc` catalog IDs | code-first OAS: `chat/packages/chat/src/modules/cli-model-exec/interface/cli-model-exec-v1.interface.controller.ts` | runtime Swagger contract; the existing Web model endpoint remains an independent compatibility reference | `oas-source-only` | `P0` | `migrate` | owner=`Chat CliModelExecV1InterfaceController/ModelInternalService`; rationale=`the dedicated route reuses the existing organization-authorized model domain catalog instead of the narrowed model-exec SharedModel catalog`; removal condition=`none for the CLI route; Web migration is a separate work item`; incorporation plan=`keep the CLI path and capability/registry parity tests aligned with the code-first Chat contract` | `AIP-PUB-05` | `src/core/api.test.ts` verifies the dedicated path, production capability gate, default mapping, and preservation of custom/BYOK and `etc` IDs; Chat service/controller tests verify domain delegation and Swagger extensions |
|
|
62
62
|
| P1-MODEL-EXEC-01 | model-exec | `aipctl model-exec models`, `get`, `sample`, `chat` | `listModelExecModels`, `executeModelExecChat` | chat | `GET`, `POST` | `/api/cli/v1/organizations/{orgSlug}/model-exec/models`; `/chat` | local `ModelExecChatRequest`; Chat Zod/Swagger DTO source `chat/packages/chat/src/modules/cli-model-exec/interface/dto/cli-model-exec.dto.ts` | local `ModelExecModelCatalog`, `ModelExecChatResponse` | code-first OAS: `chat/packages/chat/src/modules/cli-model-exec/interface/cli-model-exec-v1.interface.controller.ts` | runtime Swagger contract | `oas-source-only` | `P1` | `migrate` | none | `AIP-PUB-05` | `src/core/api.test.ts` verifies both v1 paths; Chat controller contract test verifies operation IDs, request/response schemas, delegation to the existing service, and absence of a v1 image route |
|
|
63
63
|
| P1-MODEL-EXEC-02 | model-exec-image | `aipctl model-exec image generate` | `executeModelExecImageGeneration`; output uses `downloadFromUrl` | chat + external artifact URL | `POST`, external `GET` | legacy `/api/{orgSlug}/cli/model-exec/images/generations`; response `downloadUrl` | local `ModelExecImageGenerationRequest`; Chat DTO source `chat/packages/chat/src/modules/cli-model-exec/interface/dto/cli-model-exec.dto.ts` | local `ModelExecImageGenerationResponse`; image bytes from external URL | no GA OAS; legacy controller only | none | `oas-missing` | deferred | `hide` | owner=`chat CLI Model Exec API`; rationale=`synchronous image execution, external artifact lifetime, and cost recovery require the deferred async design`; removal condition=`image job/artifact/TTL/My Drive/cost gates pass`; incorporation plan=`publish a separate v1 image job contract only after the deferred design is implemented` | follow-up image hardening | existing image request/path test remains on the legacy route; customer capability must stay disabled |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aipctl",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.11",
|
|
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": "
|
|
26
|
-
"wrapperHash": "
|
|
25
|
+
"contentHash": "3ba1c423da1af4ecb2cfea8ed116569d9a97e579727ca173bd87fd17a77cdd32",
|
|
26
|
+
"wrapperHash": "40c7bf7e201612bd3435325d09cd6eebe577f5e56184f8e2c0f0a0b0bfa58368",
|
|
27
27
|
"nativeHash": "006b08c3e391f4571d9b7c0f12d684fe2448106259e7e0581b10f9be362452e9"
|
|
28
28
|
},
|
|
29
29
|
"optionalDependencies": {
|