@kora-platform/cli 0.8.2-rc4 → 0.9.0-rc3

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.
@@ -1,4 +1,4 @@
1
- import type { AbortRuntimeRunResult, AgentUsageReport, ApiKeyRecord, AuditEventListResult, AuditEventRecord, AuditOutcome, AuthoringOrganizationManagementContext, CapabilityEditorRecord, ChatHealth, ChatSessionRecord, ChatSessionSummary, CreateReleaseResult, CompleteRuntimeTaskResult, DeletedOrganizationDetail, DeletedOrganizationSummary, EnvironmentDeploymentRecord, EnvironmentDetailRecord, EnvironmentRecord, BuiltInExtensionRecord, ExtensionInstallDetailRecord, ExtensionInstallRecord, ExtensionInstallUpdatePlan, ExtensionPackageExportEnvelope, ExtensionPackageFileInput, ExtensionPackageRecord, ExtensionPackageRevisionRecord, ExtensionPackageValidationResult, ExtensionPermissions, InviteRecord, MembershipRecord, OperationsEditorRecord, WorkflowNodeTestResult, OrganizationRecord, OrganizationWithRoleRecord, OrgSecretRecord, OrgSettingsRecord, ProcessDefinitionDetail, ProcessDefinitionRecord, ProcessDefinitionSummary, ReleaseSourceSnapshotRecord, ReleaseValidationResult, ReleaseSummaryRecord, RuntimeControlActivityFocusType, RuntimeControlActivityReadResult, RuntimeControlOverviewRecord, RuntimeControlRunDetailRecord, RuntimeControlRunRecord, RuntimeControlRunStateRecord, RuntimeControlRunStepRecord, RuntimeControlStartProcessResult, RuntimeControlTaskRecord, RuntimeVariableRecord, WorkflowDependencySummary, WorkflowInspectionContext } from "./api-types.js";
1
+ import type { AbortRuntimeRunResult, AgentUsageReport, ApiKeyRecord, AuditEventListResult, AuditEventRecord, AuditOutcome, AuthoringOrganizationManagementContext, CapabilityEditorRecord, ChatHealth, ChatSessionRecord, ChatSessionSummary, CreateReleaseResult, CompleteRuntimeTaskResult, DeletedOrganizationDetail, DeletedOrganizationSummary, EnvironmentDeploymentRecord, EnvironmentDetailRecord, EnvironmentRecord, BuiltInExtensionRecord, ExtensionCapabilityGetResult, ExtensionCapabilitySearchResult, ExtensionDiscoveryGetResult, ExtensionDiscoverySearchResult, ExtensionFunctionInvokeResult, ExtensionInstallRecord, ExtensionPackageExportEnvelope, ExtensionPackageFileInput, ExtensionPackageRecord, ExtensionPackageArtifactRecord, ExtensionPackageValidationResult, ExtensionPermissions, InviteRecord, MembershipRecord, OperationsEditorRecord, WorkflowNodeTestResult, OrganizationRecord, OrganizationWithRoleRecord, OrgSecretRecord, OrgSettingsRecord, ProcessDefinitionDetail, ProcessDefinitionRecord, ProcessDefinitionSummary, ReleaseSourceSnapshotRecord, ReleaseValidationResult, ReleaseSummaryRecord, RuntimeControlActivityFocusType, RuntimeControlActivityReadResult, RuntimeControlOverviewRecord, RuntimeControlRunDetailRecord, RuntimeControlRunRecord, RuntimeControlRunStateRecord, RuntimeControlRunStepRecord, RuntimeControlStartProcessResult, RuntimeControlTaskRecord, RuntimeVariableRecord, WorkflowDependencySummary, WorkflowInspectionContext } from "./api-types.js";
2
2
  import type { CliSessionState } from "./transport.js";
3
3
  import { createPlatformTransport } from "./transport.js";
4
4
  export type ReleaseSnapshotSelectorInput = {
@@ -129,14 +129,14 @@ export declare function createPlatformApiClient(input: PlatformApiClientInput):
129
129
  publishExtensionPackage(session: CliSessionState, orgId: string, inputData: {
130
130
  files: ExtensionPackageFileInput[];
131
131
  }): Promise<{
132
+ artifact: ExtensionPackageArtifactRecord;
132
133
  package: ExtensionPackageRecord;
133
- revision: ExtensionPackageRevisionRecord;
134
134
  }>;
135
135
  publishExtensionPackageArchive(session: CliSessionState, orgId: string, archive: Uint8Array, inputData?: {
136
136
  subdir?: string;
137
137
  }): Promise<{
138
+ artifact: ExtensionPackageArtifactRecord;
138
139
  package: ExtensionPackageRecord;
139
- revision: ExtensionPackageRevisionRecord;
140
140
  }>;
141
141
  exportExtensionPackage(session: CliSessionState, orgId: string, inputData: {
142
142
  environment?: string;
@@ -145,7 +145,7 @@ export declare function createPlatformApiClient(input: PlatformApiClientInput):
145
145
  package: string;
146
146
  latest: true;
147
147
  } | {
148
- revision: string;
148
+ artifact: string;
149
149
  }): Promise<{
150
150
  exported: ExtensionPackageExportEnvelope;
151
151
  }>;
@@ -156,7 +156,7 @@ export declare function createPlatformApiClient(input: PlatformApiClientInput):
156
156
  package: string;
157
157
  latest: true;
158
158
  } | {
159
- revision: string;
159
+ artifact: string;
160
160
  }): Promise<{
161
161
  body: Uint8Array;
162
162
  headers: Headers;
@@ -165,7 +165,7 @@ export declare function createPlatformApiClient(input: PlatformApiClientInput):
165
165
  installExtension(session: CliSessionState, orgId: string, inputData: {
166
166
  environment: string;
167
167
  grantedPermissions?: ExtensionPermissions;
168
- packageRevisionId: string;
168
+ packageArtifactId: string;
169
169
  slug: string;
170
170
  }): Promise<{
171
171
  install: ExtensionInstallRecord;
@@ -182,45 +182,38 @@ export declare function createPlatformApiClient(input: PlatformApiClientInput):
182
182
  }): Promise<{
183
183
  install: ExtensionInstallRecord;
184
184
  }>;
185
- listExtensionInstalls(session: CliSessionState, orgId: string, inputData?: {
185
+ searchExtensions(session: CliSessionState, orgId: string, inputData: {
186
+ description?: string;
186
187
  environment?: string;
187
- }): Promise<{
188
- installs: ExtensionInstallRecord[];
189
- }>;
190
- getExtensionInstall(session: CliSessionState, orgId: string, installRef: string, inputData: {
188
+ limit?: number;
189
+ name?: string;
190
+ scope?: string;
191
+ title?: string;
192
+ }): Promise<ExtensionDiscoverySearchResult>;
193
+ getExtensionDiscovery(session: CliSessionState, orgId: string, installRef: string, inputData: {
191
194
  environment: string;
192
- }): Promise<{
193
- install: ExtensionInstallRecord;
194
- }>;
195
- getExtensionInstallDetail(session: CliSessionState, orgId: string, installRef: string, inputData: {
195
+ }): Promise<ExtensionDiscoveryGetResult>;
196
+ searchExtensionCapabilities(session: CliSessionState, orgId: string, installRef: string, inputData: {
197
+ description?: string;
196
198
  environment: string;
197
- }): Promise<{
198
- detail: ExtensionInstallDetailRecord;
199
- }>;
200
- grantExtensionPermissions(session: CliSessionState, orgId: string, installRef: string, inputData: {
201
- basePackageRevisionId?: string;
202
- baseUpdatedAt?: string;
199
+ kind?: string;
200
+ limit?: number;
201
+ name?: string;
202
+ }): Promise<ExtensionCapabilitySearchResult>;
203
+ getExtensionCapability(session: CliSessionState, orgId: string, installRef: string, kind: string, name: string, inputData: {
203
204
  environment: string;
204
- grantedPermissions: ExtensionPermissions;
205
- }): Promise<{
206
- install: ExtensionInstallRecord;
207
- }>;
208
- planExtensionInstallUpdate(session: CliSessionState, orgId: string, installRef: string, inputData: {
209
- basePackageRevisionId?: string;
210
- baseUpdatedAt?: string;
205
+ }): Promise<ExtensionCapabilityGetResult>;
206
+ invokeExtensionFunction(session: CliSessionState, orgId: string, installRef: string, functionName: string, inputData: {
211
207
  environment: string;
212
- packageRevisionId: string;
213
- }): Promise<{
214
- plan: ExtensionInstallUpdatePlan;
215
- }>;
216
- updateExtensionInstall(session: CliSessionState, orgId: string, installRef: string, inputData: {
217
- basePackageRevisionId?: string;
208
+ input?: unknown;
209
+ }): Promise<ExtensionFunctionInvokeResult>;
210
+ grantExtensionPermissions(session: CliSessionState, orgId: string, installRef: string, inputData: {
211
+ basePackageArtifactId?: string;
218
212
  baseUpdatedAt?: string;
219
213
  environment: string;
220
- packageRevisionId: string;
214
+ grantedPermissions: ExtensionPermissions;
221
215
  }): Promise<{
222
216
  install: ExtensionInstallRecord;
223
- plan: ExtensionInstallUpdatePlan;
224
217
  }>;
225
218
  disableExtensionInstall(session: CliSessionState, orgId: string, installRef: string, inputData: {
226
219
  environment: string;
@@ -200,48 +200,45 @@ export function createPlatformApiClient(input) {
200
200
  session
201
201
  });
202
202
  },
203
- async listExtensionInstalls(session, orgId, inputData = {}) {
203
+ async searchExtensions(session, orgId, inputData) {
204
204
  return transport.requestJson({
205
- path: withQuery(`/api/v1/orgs/${encodeURIComponent(orgId)}/extensions`, inputData),
205
+ path: withQuery(`/api/v1/orgs/${encodeURIComponent(orgId)}/extensions/discovery/search`, inputData),
206
206
  session
207
207
  });
208
208
  },
209
- async getExtensionInstall(session, orgId, installRef, inputData) {
209
+ async getExtensionDiscovery(session, orgId, installRef, inputData) {
210
210
  return transport.requestJson({
211
- path: withQuery(`/api/v1/orgs/${encodeURIComponent(orgId)}/extensions/${encodeURIComponent(installRef)}`, inputData),
211
+ path: withQuery(`/api/v1/orgs/${encodeURIComponent(orgId)}/extensions/${encodeURIComponent(installRef)}/discovery`, inputData),
212
212
  session
213
213
  });
214
214
  },
215
- async getExtensionInstallDetail(session, orgId, installRef, inputData) {
215
+ async searchExtensionCapabilities(session, orgId, installRef, inputData) {
216
216
  return transport.requestJson({
217
- path: withQuery(`/api/v1/orgs/${encodeURIComponent(orgId)}/extensions/${encodeURIComponent(installRef)}/detail`, inputData),
217
+ path: withQuery(`/api/v1/orgs/${encodeURIComponent(orgId)}/extensions/${encodeURIComponent(installRef)}/discovery/capabilities`, inputData),
218
218
  session
219
219
  });
220
220
  },
221
- async grantExtensionPermissions(session, orgId, installRef, inputData) {
222
- const { environment, ...body } = inputData;
221
+ async getExtensionCapability(session, orgId, installRef, kind, name, inputData) {
223
222
  return transport.requestJson({
224
- body,
225
- method: "PATCH",
226
- path: withQuery(`/api/v1/orgs/${encodeURIComponent(orgId)}/extensions/${encodeURIComponent(installRef)}/grants`, { environment }),
223
+ path: withQuery(`/api/v1/orgs/${encodeURIComponent(orgId)}/extensions/${encodeURIComponent(installRef)}/discovery/capabilities/${encodeURIComponent(kind)}/${encodeURIComponent(name)}`, inputData),
227
224
  session
228
225
  });
229
226
  },
230
- async planExtensionInstallUpdate(session, orgId, installRef, inputData) {
227
+ async invokeExtensionFunction(session, orgId, installRef, functionName, inputData) {
231
228
  const { environment, ...body } = inputData;
232
229
  return transport.requestJson({
233
230
  body,
234
231
  method: "POST",
235
- path: withQuery(`/api/v1/orgs/${encodeURIComponent(orgId)}/extensions/${encodeURIComponent(installRef)}/update-plan`, { environment }),
232
+ path: withQuery(`/api/v1/orgs/${encodeURIComponent(orgId)}/extensions/${encodeURIComponent(installRef)}/functions/${encodeURIComponent(functionName)}/invoke`, { environment }),
236
233
  session
237
234
  });
238
235
  },
239
- async updateExtensionInstall(session, orgId, installRef, inputData) {
236
+ async grantExtensionPermissions(session, orgId, installRef, inputData) {
240
237
  const { environment, ...body } = inputData;
241
238
  return transport.requestJson({
242
239
  body,
243
240
  method: "PATCH",
244
- path: withQuery(`/api/v1/orgs/${encodeURIComponent(orgId)}/extensions/${encodeURIComponent(installRef)}`, { environment }),
241
+ path: withQuery(`/api/v1/orgs/${encodeURIComponent(orgId)}/extensions/${encodeURIComponent(installRef)}/grants`, { environment }),
245
242
  session
246
243
  });
247
244
  },
@@ -77,7 +77,7 @@ export interface ExtensionInstallRecord extends CliRecord {
77
77
  grantedPermissions: ExtensionPermissions;
78
78
  id: string;
79
79
  packageId: string;
80
- packageRevisionId: string;
80
+ packageArtifactId: string;
81
81
  slug: string;
82
82
  }
83
83
  export interface ExtensionPackageRecord extends CliRecord {
@@ -85,11 +85,11 @@ export interface ExtensionPackageRecord extends CliRecord {
85
85
  name: string;
86
86
  orgId: string;
87
87
  }
88
- export interface ExtensionPackageRevisionRecord extends CliRecord {
88
+ export interface ExtensionPackageArtifactRecord extends CliRecord {
89
89
  fileCount: number;
90
90
  id: string;
91
91
  packageId: string;
92
- revisionHash: string;
92
+ artifactHash: string;
93
93
  totalBytes: number;
94
94
  version: string;
95
95
  }
@@ -102,7 +102,7 @@ export interface ExtensionPackageValidationResult extends CliRecord {
102
102
  diagnostics: ExtensionPackageValidationDiagnostic[];
103
103
  fileCount: number;
104
104
  ok: boolean;
105
- revisionHash?: string;
105
+ artifactHash?: string;
106
106
  totalBytes: number;
107
107
  }
108
108
  export interface ExtensionPackageExportEnvelope extends CliRecord {
@@ -111,13 +111,13 @@ export interface ExtensionPackageExportEnvelope extends CliRecord {
111
111
  installId?: string;
112
112
  installSlug?: string;
113
113
  installUpdatedAt?: string;
114
- packageRevisionId: string;
115
- revisionHash: string;
114
+ artifactHash: string;
116
115
  source: string;
117
116
  };
118
117
  }
119
118
  export interface BuiltInExtensionRecord extends CliRecord {
120
119
  availability: "available" | "unavailable";
120
+ category: string;
121
121
  defaultGrantedPermissions: ExtensionPermissions;
122
122
  description: string;
123
123
  installedSlug: string | null;
@@ -128,16 +128,65 @@ export interface BuiltInExtensionRecord extends CliRecord {
128
128
  title: string;
129
129
  unavailableReason: string | null;
130
130
  }
131
- export interface ExtensionInstallDetailRecord extends CliRecord {
132
- install: ExtensionInstallRecord;
133
- package: ExtensionPackageRecord;
134
- registrations: CliRecord | null;
135
- revision: ExtensionPackageRevisionRecord;
131
+ export interface ExtensionDiscoverySummaryRecord extends CliRecord {
132
+ capabilityCounts?: Record<string, number>;
133
+ description?: string | null;
134
+ enabled?: boolean;
135
+ environmentKey?: string;
136
+ installSlug?: string | null;
137
+ message?: string;
138
+ name: string;
139
+ nextCommands?: Record<string, string>;
140
+ packageName: string;
141
+ state?: "disabled" | "ready" | "setup_required";
142
+ status: "available" | "installed" | "unavailable";
143
+ title: string;
144
+ type: "extension";
145
+ }
146
+ export interface ExtensionDiscoverySearchResult extends CliRecord {
147
+ limit: number;
148
+ matches: ExtensionDiscoverySummaryRecord[];
149
+ totalCount: number;
150
+ truncated: boolean;
151
+ }
152
+ export interface ExtensionCapabilitySearchRecord extends CliRecord {
153
+ description: string;
154
+ kind: "function" | "function-provider" | "skill" | "tool" | "tool-provider";
155
+ name: string;
156
+ nextCommand: string;
157
+ permission?: string;
158
+ providerName?: string;
159
+ schemaAvailable: boolean;
136
160
  }
137
- export interface ExtensionInstallUpdatePlan extends CliRecord {
138
- diagnostics: WorkspaceCommandDiagnostic[];
139
- mutated: boolean;
140
- updateAllowed: boolean;
161
+ export interface ExtensionCapabilitySearchResult extends CliRecord {
162
+ extension: CliRecord;
163
+ limit: number;
164
+ matches: ExtensionCapabilitySearchRecord[];
165
+ totalCount: number;
166
+ truncated: boolean;
167
+ }
168
+ export interface ExtensionDiscoveryGetResult extends CliRecord {
169
+ extension: CliRecord;
170
+ }
171
+ export interface ExtensionCapabilityGetResult extends CliRecord {
172
+ capability: CliRecord & {
173
+ description: string;
174
+ inputSchema?: unknown;
175
+ kind: string;
176
+ name: string;
177
+ outputSchema?: unknown;
178
+ };
179
+ extension: CliRecord;
180
+ }
181
+ export interface ExtensionFunctionInvokeResult extends CliRecord {
182
+ invocation: CliRecord & {
183
+ executionId: string;
184
+ output?: unknown;
185
+ outputPersistence?: "ephemeral" | "stored";
186
+ setupTransition?: "ready" | "required";
187
+ setupTransitionScope?: "artifact" | "install";
188
+ status: "succeeded";
189
+ };
141
190
  }
142
191
  export interface ProcessDefinitionSummary extends CliRecord {
143
192
  }
@@ -889,15 +889,15 @@ const RAW_CLI_COMMANDS = [
889
889
  command(["extensions", "export"], "Export extension package source files.", {
890
890
  labels: ["read", "extension"],
891
891
  flags: [
892
- flag("install", "Export the revision currently used by an install id or slug.", {
892
+ flag("name", "Export the package currently used by an extension name or id.", {
893
893
  acceptsValue: true,
894
894
  valueType: "string"
895
895
  }),
896
- flag("environment", "Target environment when exporting by install.", {
896
+ flag("environment", "Target environment when exporting by name.", {
897
897
  acceptsValue: true,
898
898
  valueType: "string"
899
899
  }),
900
- flag("revision", "Export a package revision by id.", {
900
+ flag("artifact", "Export a published package by id.", {
901
901
  acceptsValue: true,
902
902
  valueType: "string"
903
903
  }),
@@ -905,7 +905,7 @@ const RAW_CLI_COMMANDS = [
905
905
  acceptsValue: true,
906
906
  valueType: "string"
907
907
  }),
908
- flag("latest", "Export the latest revision for --package."),
908
+ flag("latest", "Export the latest artifact for --package."),
909
909
  flag("out", "Directory to write the exported files and .kora/export.json metadata.", {
910
910
  acceptsValue: true,
911
911
  valueType: "string"
@@ -918,7 +918,7 @@ const RAW_CLI_COMMANDS = [
918
918
  ],
919
919
  requiresActiveOrg: true
920
920
  }),
921
- command(["extensions", "publish"], "Publish a validated extension package revision.", {
921
+ command(["extensions", "publish"], "Publish a validated extension package.", {
922
922
  labels: ["write", "chat-write", "extension"],
923
923
  args: [arg("path", "Path to an extension package directory.")],
924
924
  flags: [
@@ -929,11 +929,11 @@ const RAW_CLI_COMMANDS = [
929
929
  ],
930
930
  requiresActiveOrg: true
931
931
  }),
932
- command(["extensions", "install"], "Install a published extension package revision.", {
932
+ command(["extensions", "install"], "Install a published extension package.", {
933
933
  labels: ["write", "extension"],
934
934
  args: [
935
- arg("package-revision", "Extension package revision id."),
936
- arg("slug", "Install slug.")
935
+ arg("published-package", "Published package id."),
936
+ arg("name", "Name.")
937
937
  ],
938
938
  flags: [
939
939
  flag("environment", "Target environment.", {
@@ -948,9 +948,9 @@ const RAW_CLI_COMMANDS = [
948
948
  ],
949
949
  requiresActiveOrg: true
950
950
  }),
951
- command(["extensions", "grant"], "Replace the granted permissions for an extension install.", {
951
+ command(["extensions", "grant"], "Replace the granted permissions for an extension.", {
952
952
  labels: ["write", "extension"],
953
- args: [arg("install", "Extension install id or slug.")],
953
+ args: [arg("name", "Extension name or id.")],
954
954
  flags: [
955
955
  flag("environment", "Target environment.", {
956
956
  acceptsValue: true,
@@ -962,36 +962,6 @@ const RAW_CLI_COMMANDS = [
962
962
  required: true,
963
963
  valueType: "string"
964
964
  }),
965
- flag("base-package-revision", "Expected current package revision id precondition.", {
966
- acceptsValue: true,
967
- valueType: "string"
968
- }),
969
- flag("base-updated-at", "Expected current install updatedAt precondition.", {
970
- acceptsValue: true,
971
- valueType: "string"
972
- })
973
- ],
974
- requiresActiveOrg: true
975
- }),
976
- command(["extensions", "update"], "Update an extension install to another package revision.", {
977
- labels: ["write", "extension"],
978
- args: [arg("install", "Extension install id or slug.")],
979
- flags: [
980
- flag("environment", "Target environment.", {
981
- acceptsValue: true,
982
- required: true,
983
- valueType: "string"
984
- }),
985
- flag("revision", "Target extension package revision id.", {
986
- acceptsValue: true,
987
- required: true,
988
- valueType: "string"
989
- }),
990
- flag("dry-run", "Plan the install update without mutating it."),
991
- flag("base-package-revision", "Expected current package revision id precondition.", {
992
- acceptsValue: true,
993
- valueType: "string"
994
- }),
995
965
  flag("base-updated-at", "Expected current install updatedAt precondition.", {
996
966
  acceptsValue: true,
997
967
  valueType: "string"
@@ -1009,14 +979,14 @@ const RAW_CLI_COMMANDS = [
1009
979
  }),
1010
980
  command(["extensions", "built-ins", "install"], "Install a built-in extension.", {
1011
981
  labels: ["write", "extension"],
1012
- args: [arg("built-in", "Built-in extension slug.")],
982
+ args: [arg("built-in", "Built-in extension.")],
1013
983
  flags: [
1014
984
  flag("environment", "Target environment.", {
1015
985
  acceptsValue: true,
1016
986
  required: true,
1017
987
  valueType: "string"
1018
988
  }),
1019
- flag("slug", "Install slug. Defaults to the built-in slug.", {
989
+ flag("name", "Name. Defaults to the built-in name.", {
1020
990
  acceptsValue: true,
1021
991
  valueType: "string"
1022
992
  }),
@@ -1027,37 +997,102 @@ const RAW_CLI_COMMANDS = [
1027
997
  ],
1028
998
  requiresActiveOrg: true
1029
999
  }),
1030
- command(["extensions", "list"], "List extension installs.", {
1000
+ command(["extensions", "search"], "Search extensions or capabilities with bounded summary output.", {
1031
1001
  labels: ["read", "chat-read", "extension"],
1032
- flags: [flag("environment", "Target environment.", {
1002
+ args: [arg("extension", "Extension name or id when searching inside one extension.", false)],
1003
+ examples: [
1004
+ "kora extensions search --environment production --name \"*github*\"",
1005
+ "kora extensions search --environment production --scope available --description \"*email*\"",
1006
+ "kora extensions search github --environment production --kind function --description \"*pull request*\""
1007
+ ],
1008
+ flags: [
1009
+ flag("environment", "Target environment.", {
1033
1010
  acceptsValue: true,
1034
1011
  valueType: "string"
1035
- })],
1012
+ }),
1013
+ flag("scope", "Extension search scope.", {
1014
+ acceptsValue: true,
1015
+ knownValues: ["installed", "available", "all"],
1016
+ valueType: "string"
1017
+ }),
1018
+ flag("kind", "Capability kind when searching inside an extension.", {
1019
+ acceptsValue: true,
1020
+ knownValues: ["function", "tool", "skill", "function-provider", "tool-provider"],
1021
+ valueType: "string"
1022
+ }),
1023
+ flag("name", "Case-insensitive wildcard name filter.", {
1024
+ acceptsValue: true,
1025
+ valueType: "string"
1026
+ }),
1027
+ flag("title", "Case-insensitive wildcard title filter for extension search.", {
1028
+ acceptsValue: true,
1029
+ valueType: "string"
1030
+ }),
1031
+ flag("description", "Case-insensitive wildcard description filter.", {
1032
+ acceptsValue: true,
1033
+ valueType: "string"
1034
+ }),
1035
+ flag("limit", "Maximum result count.", {
1036
+ acceptsValue: true,
1037
+ valueType: "number"
1038
+ })
1039
+ ],
1036
1040
  requiresActiveOrg: true
1037
1041
  }),
1038
- command(["extensions", "inspect"], "Show one extension install.", {
1042
+ command(["extensions", "get"], "Get bounded extension detail or one exact capability contract.", {
1039
1043
  labels: ["read", "chat-read", "extension"],
1040
- args: [arg("install", "Extension install id or slug.")],
1041
- flags: [flag("environment", "Target environment.", {
1044
+ args: [arg("extension", "Extension name or id.")],
1045
+ examples: [
1046
+ "kora extensions get github --environment production",
1047
+ "kora extensions get github --environment production --function GITHUB_LIST_PULL_REQUESTS"
1048
+ ],
1049
+ flags: [
1050
+ flag("environment", "Target environment.", {
1042
1051
  acceptsValue: true,
1043
1052
  required: true,
1044
1053
  valueType: "string"
1045
- })],
1054
+ }),
1055
+ flag("function", "Exact function name to expand.", {
1056
+ acceptsValue: true,
1057
+ valueType: "string"
1058
+ }),
1059
+ flag("tool", "Exact tool name to expand.", {
1060
+ acceptsValue: true,
1061
+ valueType: "string"
1062
+ }),
1063
+ flag("skill", "Exact skill name to expand.", {
1064
+ acceptsValue: true,
1065
+ valueType: "string"
1066
+ })
1067
+ ],
1046
1068
  requiresActiveOrg: true
1047
1069
  }),
1048
- command(["extensions", "detail"], "Show extension install detail including registered functions, tools, and settings views.", {
1049
- labels: ["read", "chat-read", "extension"],
1050
- args: [arg("install", "Extension install id or slug.")],
1051
- flags: [flag("environment", "Target environment.", {
1070
+ command(["extensions", "invoke"], "Invoke one installed extension function with explicit JSON input.", {
1071
+ labels: ["execution", "chat-execution", "extension"],
1072
+ args: [
1073
+ arg("extension", "Extension name or id."),
1074
+ arg("function", "Exact function name to invoke.")
1075
+ ],
1076
+ examples: [
1077
+ "kora extensions invoke notion searchNotionPage --environment production --input @input.json --yes --json"
1078
+ ],
1079
+ flags: [
1080
+ flag("environment", "Target environment.", {
1052
1081
  acceptsValue: true,
1053
1082
  required: true,
1054
1083
  valueType: "string"
1055
- })],
1084
+ }),
1085
+ flag("input", "Structured JSON input via @file.json or - for stdin.", {
1086
+ acceptsValue: true,
1087
+ valueType: "string"
1088
+ }),
1089
+ flag("yes", "Confirm the extension function invocation without an interactive prompt.")
1090
+ ],
1056
1091
  requiresActiveOrg: true
1057
1092
  }),
1058
- command(["extensions", "disable"], "Disable an extension install.", {
1093
+ command(["extensions", "disable"], "Disable an extension.", {
1059
1094
  labels: ["write", "extension"],
1060
- args: [arg("install", "Extension install id or slug.")],
1095
+ args: [arg("name", "Extension name or id.")],
1061
1096
  flags: [flag("environment", "Target environment.", {
1062
1097
  acceptsValue: true,
1063
1098
  required: true,
@@ -1065,9 +1100,9 @@ const RAW_CLI_COMMANDS = [
1065
1100
  })],
1066
1101
  requiresActiveOrg: true
1067
1102
  }),
1068
- command(["extensions", "enable"], "Enable an extension install.", {
1103
+ command(["extensions", "enable"], "Enable an extension.", {
1069
1104
  labels: ["write", "extension"],
1070
- args: [arg("install", "Extension install id or slug.")],
1105
+ args: [arg("name", "Extension name or id.")],
1071
1106
  flags: [flag("environment", "Target environment.", {
1072
1107
  acceptsValue: true,
1073
1108
  required: true,
@@ -1075,9 +1110,9 @@ const RAW_CLI_COMMANDS = [
1075
1110
  })],
1076
1111
  requiresActiveOrg: true
1077
1112
  }),
1078
- command(["extensions", "delete"], "Delete an extension install.", {
1113
+ command(["extensions", "delete"], "Delete an extension.", {
1079
1114
  labels: ["destructive", "extension"],
1080
- args: [arg("install", "Extension install id or slug.")],
1115
+ args: [arg("name", "Extension name or id.")],
1081
1116
  destructive: true,
1082
1117
  flags: [
1083
1118
  flag("environment", "Target environment.", {
package/dist/commands.js CHANGED
@@ -152,12 +152,11 @@ export async function executeParsedCommand(parsed, context) {
152
152
  case "extensions.publish":
153
153
  case "extensions.install":
154
154
  case "extensions.grant":
155
- case "extensions.update":
156
155
  case "extensions.built-ins.list":
157
156
  case "extensions.built-ins.install":
158
- case "extensions.list":
159
- case "extensions.inspect":
160
- case "extensions.detail":
157
+ case "extensions.search":
158
+ case "extensions.get":
159
+ case "extensions.invoke":
161
160
  case "extensions.disable":
162
161
  case "extensions.enable":
163
162
  case "extensions.delete":