@stigmer/sdk 3.15.3-dev.20260914121148 → 3.16.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.
Files changed (49) hide show
  1. package/__tests__/plugin.test.d.ts +2 -0
  2. package/__tests__/plugin.test.d.ts.map +1 -0
  3. package/__tests__/plugin.test.js +74 -0
  4. package/__tests__/plugin.test.js.map +1 -0
  5. package/artifact-routing.d.ts +38 -0
  6. package/artifact-routing.d.ts.map +1 -0
  7. package/artifact-routing.js +60 -0
  8. package/artifact-routing.js.map +1 -0
  9. package/gen/authorization-config.d.ts.map +1 -1
  10. package/gen/authorization-config.js +1 -0
  11. package/gen/authorization-config.js.map +1 -1
  12. package/gen/client.d.ts +4 -0
  13. package/gen/client.d.ts.map +1 -1
  14. package/gen/client.js +4 -0
  15. package/gen/client.js.map +1 -1
  16. package/gen/plugin.d.ts +54 -0
  17. package/gen/plugin.d.ts.map +1 -0
  18. package/gen/plugin.js +120 -0
  19. package/gen/plugin.js.map +1 -0
  20. package/gen/resource-availability.d.ts.map +1 -1
  21. package/gen/resource-availability.js +1 -0
  22. package/gen/resource-availability.js.map +1 -1
  23. package/index.d.ts +2 -0
  24. package/index.d.ts.map +1 -1
  25. package/index.js +2 -0
  26. package/index.js.map +1 -1
  27. package/package.json +2 -2
  28. package/plugin.d.ts +25 -0
  29. package/plugin.d.ts.map +1 -0
  30. package/plugin.js +46 -0
  31. package/plugin.js.map +1 -0
  32. package/skill.d.ts +8 -32
  33. package/skill.d.ts.map +1 -1
  34. package/skill.js +24 -81
  35. package/skill.js.map +1 -1
  36. package/src/__tests__/plugin.test.ts +92 -0
  37. package/src/artifact-routing.ts +111 -0
  38. package/src/gen/authorization-config.ts +1 -0
  39. package/src/gen/client.ts +5 -0
  40. package/src/gen/plugin.ts +143 -0
  41. package/src/gen/resource-availability.ts +1 -0
  42. package/src/index.ts +2 -0
  43. package/src/plugin.ts +59 -0
  44. package/src/skill.ts +28 -94
  45. package/src/stigmer.ts +13 -3
  46. package/stigmer.d.ts +7 -0
  47. package/stigmer.d.ts.map +1 -1
  48. package/stigmer.js +13 -2
  49. package/stigmer.js.map +1 -1
@@ -0,0 +1,143 @@
1
+ // Code generated by stigmer-codegen. DO NOT EDIT.
2
+
3
+ import { wrapError } from "./errors.js";
4
+ import { stripUndefined } from "./proto-utils.js";
5
+ import { type ResourceRef } from "./types.js";
6
+ import { create } from "@bufbuild/protobuf";
7
+ import { createClient, type Client, type Transport } from "@connectrpc/connect";
8
+ import { PluginSchema, type Plugin } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/api_pb";
9
+ import { PluginCommandController } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/command_pb";
10
+ import { PluginIdSchema, PushPluginRequestSchema, CreatePluginArtifactUploadUrlRequestSchema, PluginArtifactUploadUrlSchema, ListPluginMembersResponseSchema, ListPluginVersionsInputSchema, ListPluginVersionsResponseSchema, type PushPluginRequest, type CreatePluginArtifactUploadUrlRequest, type PluginArtifactUploadUrl, type ListPluginMembersResponse, type ListPluginVersionsInput, type ListPluginVersionsResponse } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/io_pb";
11
+ import { PluginQueryController } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/query_pb";
12
+ import { PluginSpecSchema, PluginDialect, PluginAuthorSchema } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/spec_pb";
13
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
14
+ import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
15
+ import { ApiResourceReferenceSchema, type UpdateVisibilityInput } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
16
+ import { ApiResourceMetadataSchema, ApiResourceMetadataVersionSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
17
+
18
+ /** Provides operations on plugin resources. */
19
+ export class PluginClient {
20
+ private readonly command: Client<typeof PluginCommandController>;
21
+ private readonly query: Client<typeof PluginQueryController>;
22
+
23
+ constructor(transport: Transport) {
24
+ this.command = createClient(PluginCommandController, transport);
25
+ this.query = createClient(PluginQueryController, transport);
26
+ }
27
+
28
+ async push(input: PushPluginRequest): Promise<Plugin> {
29
+ try {
30
+ return await this.command.push(input);
31
+ } catch (e) { throw wrapError(e); }
32
+ }
33
+
34
+ async createArtifactUploadUrl(input: CreatePluginArtifactUploadUrlRequest): Promise<PluginArtifactUploadUrl> {
35
+ try {
36
+ return await this.command.createArtifactUploadUrl(input);
37
+ } catch (e) { throw wrapError(e); }
38
+ }
39
+
40
+ async updateVisibility(input: UpdateVisibilityInput): Promise<Plugin> {
41
+ try {
42
+ return await this.command.updateVisibility(input);
43
+ } catch (e) { throw wrapError(e); }
44
+ }
45
+
46
+ async delete(id: string): Promise<Plugin> {
47
+ try {
48
+ return await this.command.delete(create(PluginIdSchema, { value: id }));
49
+ } catch (e) { throw wrapError(e); }
50
+ }
51
+
52
+ async get(id: string): Promise<Plugin> {
53
+ try {
54
+ return await this.query.get(create(PluginIdSchema, { value: id }));
55
+ } catch (e) { throw wrapError(e); }
56
+ }
57
+
58
+ async getByReference(ref: ResourceRef): Promise<Plugin> {
59
+ try {
60
+ return await this.query.getByReference(create(ApiResourceReferenceSchema, { ...ref, kind: ApiResourceKind.plugin }));
61
+ } catch (e) { throw wrapError(e); }
62
+ }
63
+
64
+ async listMembers(id: string): Promise<ListPluginMembersResponse> {
65
+ try {
66
+ return await this.query.listMembers(create(PluginIdSchema, { value: id }));
67
+ } catch (e) { throw wrapError(e); }
68
+ }
69
+
70
+ async listVersions(input: ListPluginVersionsInput): Promise<ListPluginVersionsResponse> {
71
+ try {
72
+ return await this.query.listVersions(input);
73
+ } catch (e) { throw wrapError(e); }
74
+ }
75
+ }
76
+
77
+ /** Input for creating/updating a Plugin. */
78
+ export interface PluginInput {
79
+ /**
80
+ * The resource's `metadata.id`, for exact update addressing when set
81
+ * from a loaded resource. Required for updates to platform-scoped
82
+ * (org-less) kinds, where the org+slug fallback cannot match. On
83
+ * create, the cloud server stamps its own id regardless; the OSS
84
+ * server honors a caller-supplied id (existing apply semantics).
85
+ */
86
+ id?: string;
87
+ name: string;
88
+ slug?: string;
89
+ org: string;
90
+ labels?: Record<string, string>;
91
+ visibility?: ApiResourceVisibility;
92
+ versionMessage?: string;
93
+ version?: string;
94
+ description?: string;
95
+ author?: PluginAuthorInput;
96
+ homepage?: string;
97
+ repository?: string;
98
+ license?: string;
99
+ keywords?: string[];
100
+ dialect?: PluginDialect;
101
+ }
102
+
103
+ /** SDK input type for PluginAuthor. */
104
+ export interface PluginAuthorInput {
105
+ name?: string;
106
+ email?: string;
107
+ url?: string;
108
+ }
109
+
110
+ function buildPluginAuthorProto(input: PluginAuthorInput) {
111
+ return Object.assign(create(PluginAuthorSchema), stripUndefined({
112
+ name: input.name,
113
+ email: input.email,
114
+ url: input.url,
115
+ }));
116
+ }
117
+
118
+ export function buildPluginProto(input: PluginInput): Plugin {
119
+ const author = input.author ? buildPluginAuthorProto(input.author) : undefined;
120
+ return Object.assign(create(PluginSchema), {
121
+ apiVersion: "agentic.stigmer.ai/v1",
122
+ kind: "Plugin",
123
+ metadata: Object.assign(create(ApiResourceMetadataSchema), {
124
+ ...(input.id && { id: input.id }),
125
+ name: input.name,
126
+ org: input.org,
127
+ ...(input.slug && { slug: input.slug }),
128
+ ...(input.labels && { labels: input.labels }),
129
+ ...(input.visibility && { visibility: input.visibility }),
130
+ ...(input.versionMessage && { version: Object.assign(create(ApiResourceMetadataVersionSchema), { message: input.versionMessage }) }),
131
+ }),
132
+ spec: Object.assign(create(PluginSpecSchema), stripUndefined({
133
+ version: input.version,
134
+ description: input.description,
135
+ author,
136
+ homepage: input.homepage,
137
+ repository: input.repository,
138
+ license: input.license,
139
+ keywords: input.keywords,
140
+ dialect: input.dialect,
141
+ })),
142
+ }) as Plugin;
143
+ }
@@ -39,5 +39,6 @@ export const KIND_TIERS: ReadonlyMap<ApiResourceKind, ResourceTier> = new Map([
39
39
  [ApiResourceKind.artifact, ResourceTier.open_source],
40
40
  [ApiResourceKind.schedule, ResourceTier.open_source],
41
41
  [ApiResourceKind.memory, ResourceTier.open_source],
42
+ [ApiResourceKind.plugin, ResourceTier.open_source],
42
43
  [ApiResourceKind.project, ResourceTier.open_source],
43
44
  ]);
package/src/index.ts CHANGED
@@ -362,6 +362,8 @@ export {
362
362
  export { toDisplayFileChange } from "./execution/to-display-file-change.js";
363
363
  export { SkillClient, type SkillInput } from "./gen/skill.js";
364
364
  export { RoutedSkillClient, MAX_INLINE_ARTIFACT_BYTES } from "./skill.js";
365
+ export { PluginClient, type PluginInput, type PluginAuthorInput } from "./gen/plugin.js";
366
+ export { RoutedPluginClient } from "./plugin.js";
365
367
  export {
366
368
  WorkflowClient,
367
369
  toWorkflowUpdateInput,
package/src/plugin.ts ADDED
@@ -0,0 +1,59 @@
1
+ import { create } from "@bufbuild/protobuf";
2
+ import type { Transport } from "@connectrpc/connect";
3
+ import type { Plugin } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/api_pb";
4
+ import {
5
+ CreatePluginArtifactUploadUrlRequestSchema,
6
+ PushPluginRequestSchema,
7
+ type PushPluginRequest,
8
+ } from "@stigmer/protos/ai/stigmer/agentic/plugin/v1/io_pb";
9
+ import { pushRoutedArtifact } from "./artifact-routing.js";
10
+ import type { ArtifactRoute } from "./artifact-routing.js";
11
+ import { PluginClient } from "./gen/plugin.js";
12
+
13
+ /**
14
+ * Plugin client with transport-aware push routing: the plugin binding of
15
+ * `artifact-routing.ts`. A plugin archive travels inline when it fits the
16
+ * gRPC message cap and is staged over HTTP via `createArtifactUploadUrl`
17
+ * (the skill lane's slots, one upload surface) when it does not; `push`
18
+ * simply works for any valid archive size. Every other method is the
19
+ * generated client's, inherited unchanged.
20
+ */
21
+ export class RoutedPluginClient extends PluginClient {
22
+ private readonly fetchImpl: typeof globalThis.fetch | undefined;
23
+ private readonly route: ArtifactRoute<PushPluginRequest, Plugin>;
24
+
25
+ /**
26
+ * @param fetchImpl - Custom `fetch` for the staging PUT. Must be the same
27
+ * implementation the transport uses where the global one is restricted
28
+ * (the Tauri CSP/CORS case the `Stigmer.fetch` property documents).
29
+ */
30
+ constructor(transport: Transport, fetchImpl?: typeof globalThis.fetch) {
31
+ super(transport);
32
+ this.fetchImpl = fetchImpl;
33
+ this.route = {
34
+ noun: "plugin",
35
+ artifactOf: (request) => request.artifact,
36
+ uploadRefOf: (request) => request.artifactUploadRef,
37
+ orgOf: (request) => request.org,
38
+ withUploadRef: (request, artifactUploadRef) =>
39
+ create(PushPluginRequestSchema, {
40
+ ...request,
41
+ artifact: new Uint8Array(0),
42
+ artifactUploadRef,
43
+ }),
44
+ mintUploadUrl: (org, sizeBytes) =>
45
+ super.createArtifactUploadUrl(
46
+ create(CreatePluginArtifactUploadUrlRequestSchema, {
47
+ org,
48
+ sizeBytes,
49
+ }),
50
+ ),
51
+ push: (request) => super.push(request),
52
+ };
53
+ }
54
+
55
+ /** Push a plugin archive, routing it by size (see the class comment). */
56
+ override push(input: PushPluginRequest): Promise<Plugin> {
57
+ return pushRoutedArtifact(this.route, input, this.fetchImpl);
58
+ }
59
+ }
package/src/skill.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { create } from "@bufbuild/protobuf";
2
- import { Code } from "@connectrpc/connect";
3
2
  import type { Transport } from "@connectrpc/connect";
4
3
  import type { Skill } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/api_pb";
5
4
  import {
@@ -7,31 +6,24 @@ import {
7
6
  PushSkillRequestSchema,
8
7
  type PushSkillRequest,
9
8
  } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/io_pb";
10
- import { isUnimplemented, StigmerError } from "./gen/errors.js";
9
+ import { pushRoutedArtifact } from "./artifact-routing.js";
10
+ import type { ArtifactRoute } from "./artifact-routing.js";
11
11
  import { SkillClient } from "./gen/skill.js";
12
12
 
13
- /**
14
- * Largest artifact pushed inline in the gRPC request (#675). The server's
15
- * transport cap is 10MB for the WHOLE message, so the artifact leaves 64KB
16
- * of headroom for the request envelope (org, tag, provenance, framing).
17
- * Mirrors the Go SDK's maxInlineArtifactBytes.
18
- */
19
- export const MAX_INLINE_ARTIFACT_BYTES = 10 * 1024 * 1024 - 64 * 1024;
13
+ export { MAX_INLINE_ARTIFACT_BYTES } from "./artifact-routing.js";
20
14
 
21
15
  /**
22
- * Skill client with transport-aware push routing (stigmer#675 / #701).
23
- *
24
- * The gRPC transport caps messages at 10MB while skills may be up to 100MB,
25
- * so `push` routes by size: small artifacts travel inline in the request
26
- * (one round trip, unchanged behavior), larger ones are staged over HTTP
27
- * via `createArtifactUploadUrl` — a capability URL, so no auth header —
28
- * and pushed by reference. Callers never see the mechanics: `push(req)`
29
- * simply works for any valid skill size.
16
+ * Skill client with transport-aware push routing (stigmer#675 / #701):
17
+ * the skill binding of `artifact-routing.ts`, which holds the mechanism
18
+ * (small artifacts inline, larger ones staged over HTTP via
19
+ * `createArtifactUploadUrl` and pushed by reference). Callers never see
20
+ * the mechanics: `push(req)` simply works for any valid skill size.
30
21
  *
31
22
  * Every other method is the generated client's, inherited unchanged.
32
23
  */
33
24
  export class RoutedSkillClient extends SkillClient {
34
25
  private readonly fetchImpl: typeof globalThis.fetch | undefined;
26
+ private readonly route: ArtifactRoute<PushSkillRequest, Skill>;
35
27
 
36
28
  /**
37
29
  * @param fetchImpl - Custom `fetch` for the staging PUT. Must be the same
@@ -41,85 +33,27 @@ export class RoutedSkillClient extends SkillClient {
41
33
  constructor(transport: Transport, fetchImpl?: typeof globalThis.fetch) {
42
34
  super(transport);
43
35
  this.fetchImpl = fetchImpl;
44
- }
45
-
46
- /**
47
- * Push a skill, routing the artifact by size (see the class comment).
48
- *
49
- * A request that already carries an `artifactUploadRef` is passed through
50
- * untouched — the caller has done its own staging.
51
- */
52
- override async push(input: PushSkillRequest): Promise<Skill> {
53
- if (input.artifactUploadRef !== "" || input.artifact.length <= MAX_INLINE_ARTIFACT_BYTES) {
54
- return super.push(input);
55
- }
56
- return this.pushViaUploadUrl(input);
57
- }
58
-
59
- /**
60
- * Stage the artifact over HTTP and push by reference:
61
- * createArtifactUploadUrl → PUT bytes → push(artifactUploadRef).
62
- */
63
- private async pushViaUploadUrl(input: PushSkillRequest): Promise<Skill> {
64
- let minted;
65
- try {
66
- minted = await super.createArtifactUploadUrl(
67
- create(CreateSkillArtifactUploadUrlRequestSchema, {
68
- org: input.org,
69
- sizeBytes: BigInt(input.artifact.length),
36
+ this.route = {
37
+ noun: "skill",
38
+ artifactOf: (request) => request.artifact,
39
+ uploadRefOf: (request) => request.artifactUploadRef,
40
+ orgOf: (request) => request.org,
41
+ withUploadRef: (request, artifactUploadRef) =>
42
+ create(PushSkillRequestSchema, {
43
+ ...request,
44
+ artifact: new Uint8Array(0),
45
+ artifactUploadRef,
70
46
  }),
71
- );
72
- } catch (err) {
73
- if (isUnimplemented(err)) {
74
- // Pre-transfer-lane server: without staging, an artifact this size
75
- // physically cannot travel. Say so instead of surfacing the raw
76
- // transport error (the failure mode #675 reported).
77
- throw new StigmerError(
78
- "unknown",
79
- `skill artifact is ${input.artifact.length} bytes, above the ~10MB gRPC message cap, ` +
80
- "and this server does not support the HTTP artifact transfer lane — " +
81
- "upgrade stigmer-server to push skills of this size",
82
- Code.Unimplemented,
83
- { cause: err },
84
- );
85
- }
86
- throw err;
87
- }
88
-
89
- await this.putArtifact(minted.url, input.artifact);
90
-
91
- // Same request, artifact traveling by reference instead of by value.
92
- const byRef = create(PushSkillRequestSchema, {
93
- ...input,
94
- artifact: new Uint8Array(0),
95
- artifactUploadRef: minted.artifactUploadRef,
96
- });
97
- return super.push(byRef);
47
+ mintUploadUrl: (org, sizeBytes) =>
48
+ super.createArtifactUploadUrl(
49
+ create(CreateSkillArtifactUploadUrlRequestSchema, { org, sizeBytes }),
50
+ ),
51
+ push: (request) => super.push(request),
52
+ };
98
53
  }
99
54
 
100
- /**
101
- * PUT the artifact ZIP to the staging URL. The URL is the credential
102
- * (capability semantics — a pre-signed R2 URL on cloud, the server's own
103
- * transfer lane on OSS), so no auth header is attached.
104
- */
105
- private async putArtifact(url: string, artifact: Uint8Array): Promise<void> {
106
- const doFetch = this.fetchImpl ?? globalThis.fetch;
107
- const resp = await doFetch(url, {
108
- method: "PUT",
109
- // Both DOM and undici accept an ArrayBufferView body at runtime; the
110
- // cast bridges TS 5.7's ArrayBufferLike generic, which BodyInit's
111
- // typing predates. A Blob/Buffer wrapper would copy up to 100MB for
112
- // nothing, and Buffer is Node-only while this client is isomorphic.
113
- body: artifact as unknown as RequestInit["body"],
114
- headers: { "content-type": "application/zip" },
115
- });
116
- if (!resp.ok) {
117
- const detail = (await resp.text().catch(() => "")).slice(0, 512).trim();
118
- throw new StigmerError(
119
- "unknown",
120
- `skill artifact upload rejected with HTTP ${resp.status}${detail === "" ? "" : `: ${detail}`}`,
121
- Code.Unknown,
122
- );
123
- }
55
+ /** Push a skill, routing the artifact by size (see the class comment). */
56
+ override push(input: PushSkillRequest): Promise<Skill> {
57
+ return pushRoutedArtifact(this.route, input, this.fetchImpl);
124
58
  }
125
59
  }
package/src/stigmer.ts CHANGED
@@ -7,6 +7,7 @@ import { ManifestClient } from "./manifest/index.js";
7
7
  import { PlatformClient } from "./platform.js";
8
8
  import { ProviderStandingClient } from "./provider-standing.js";
9
9
  import { SearchClient } from "./search.js";
10
+ import { RoutedPluginClient } from "./plugin.js";
10
11
  import { RoutedSkillClient } from "./skill.js";
11
12
  import { createStigmerTransport } from "./transport.js";
12
13
  import {
@@ -92,6 +93,12 @@ export class Stigmer extends GeneratedClient {
92
93
  * `stigmer.skill.push` simply works for any valid skill size.
93
94
  */
94
95
  override readonly skill: RoutedSkillClient;
96
+ /**
97
+ * Plugin operations, with `push` routed by archive size over the same
98
+ * transfer lane — shadows the inherited generated client so
99
+ * `stigmer.plugin.push` simply works for any valid archive size.
100
+ */
101
+ override readonly plugin: RoutedPluginClient;
95
102
 
96
103
  private readonly _tokenProvider: TokenProvider;
97
104
 
@@ -106,7 +113,7 @@ export class Stigmer extends GeneratedClient {
106
113
  this.defaultExecutionTarget = toExecutionTarget(config.executionTarget);
107
114
  this._tokenProvider = config.apiKey
108
115
  ? () => config.apiKey!
109
- : config.getAccessToken ?? (() => null);
116
+ : (config.getAccessToken ?? (() => null));
110
117
 
111
118
  this.activity = new ActivityClient(transport);
112
119
  this.billing = new BillingClient(transport);
@@ -117,6 +124,7 @@ export class Stigmer extends GeneratedClient {
117
124
  this.github = new GitHubClient(transport);
118
125
  this.manifest = new ManifestClient(transport);
119
126
  this.skill = new RoutedSkillClient(transport, config.fetch);
127
+ this.plugin = new RoutedPluginClient(transport, config.fetch);
120
128
 
121
129
  if (this.defaultExecutionTarget != null) {
122
130
  this._applyExecutionTargetDefaults();
@@ -148,7 +156,10 @@ export class Stigmer extends GeneratedClient {
148
156
  this.agentExecution.create = (input) =>
149
157
  origExecutionCreate(
150
158
  input.sessionSpec
151
- ? { ...input, sessionSpec: applySessionDefault(input.sessionSpec, target) }
159
+ ? {
160
+ ...input,
161
+ sessionSpec: applySessionDefault(input.sessionSpec, target),
162
+ }
152
163
  : input,
153
164
  );
154
165
  }
@@ -193,4 +204,3 @@ function applySessionDefault<T extends { executionTarget?: ExecutionTarget }>(
193
204
  }
194
205
  return input;
195
206
  }
196
-
package/stigmer.d.ts CHANGED
@@ -7,6 +7,7 @@ import { ManifestClient } from "./manifest/index.js";
7
7
  import { PlatformClient } from "./platform.js";
8
8
  import { ProviderStandingClient } from "./provider-standing.js";
9
9
  import { SearchClient } from "./search.js";
10
+ import { RoutedPluginClient } from "./plugin.js";
10
11
  import { RoutedSkillClient } from "./skill.js";
11
12
  import { type StigmerConfig } from "./config.js";
12
13
  import { ExecutionTarget } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_pb";
@@ -81,6 +82,12 @@ export declare class Stigmer extends GeneratedClient {
81
82
  * `stigmer.skill.push` simply works for any valid skill size.
82
83
  */
83
84
  readonly skill: RoutedSkillClient;
85
+ /**
86
+ * Plugin operations, with `push` routed by archive size over the same
87
+ * transfer lane — shadows the inherited generated client so
88
+ * `stigmer.plugin.push` simply works for any valid archive size.
89
+ */
90
+ readonly plugin: RoutedPluginClient;
84
91
  private readonly _tokenProvider;
85
92
  constructor(config: StigmerConfig);
86
93
  /**
package/stigmer.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"stigmer.d.ts","sourceRoot":"","sources":["../src/stigmer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAC;AAIxF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,OAAQ,SAAQ,eAAe;IAC1C;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;IAEpD;;;;;;;;;OASG;IACH,QAAQ,CAAC,sBAAsB,EAAE,eAAe,GAAG,SAAS,CAAC;IAE7D,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,yDAAyD;IACzD,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAC9C,uEAAuE;IACvE,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;;OAIG;IACH,SAAkB,KAAK,EAAE,iBAAiB,CAAC;IAE3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAEnC,MAAM,EAAE,aAAa;IA4BjC;;;;;;;;;OASG;IACH,OAAO,CAAC,6BAA6B;IAoBrC;;;;;;;;;OASG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAGlD"}
1
+ {"version":3,"file":"stigmer.d.ts","sourceRoot":"","sources":["../src/stigmer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAC;AAIxF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,OAAQ,SAAQ,eAAe;IAC1C;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;IAEpD;;;;;;;;;OASG;IACH,QAAQ,CAAC,sBAAsB,EAAE,eAAe,GAAG,SAAS,CAAC;IAE7D,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,yDAAyD;IACzD,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAC9C,uEAAuE;IACvE,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;;OAIG;IACH,SAAkB,KAAK,EAAE,iBAAiB,CAAC;IAC3C;;;;OAIG;IACH,SAAkB,MAAM,EAAE,kBAAkB,CAAC;IAE7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAEnC,MAAM,EAAE,aAAa;IA6BjC;;;;;;;;;OASG;IACH,OAAO,CAAC,6BAA6B;IAuBrC;;;;;;;;;OASG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAGlD"}
package/stigmer.js CHANGED
@@ -7,6 +7,7 @@ import { ManifestClient } from "./manifest/index.js";
7
7
  import { PlatformClient } from "./platform.js";
8
8
  import { ProviderStandingClient } from "./provider-standing.js";
9
9
  import { SearchClient } from "./search.js";
10
+ import { RoutedPluginClient } from "./plugin.js";
10
11
  import { RoutedSkillClient } from "./skill.js";
11
12
  import { createStigmerTransport } from "./transport.js";
12
13
  import { validateConfig, } from "./config.js";
@@ -82,6 +83,12 @@ export class Stigmer extends GeneratedClient {
82
83
  * `stigmer.skill.push` simply works for any valid skill size.
83
84
  */
84
85
  skill;
86
+ /**
87
+ * Plugin operations, with `push` routed by archive size over the same
88
+ * transfer lane — shadows the inherited generated client so
89
+ * `stigmer.plugin.push` simply works for any valid archive size.
90
+ */
91
+ plugin;
85
92
  _tokenProvider;
86
93
  constructor(config) {
87
94
  validateConfig(config);
@@ -92,7 +99,7 @@ export class Stigmer extends GeneratedClient {
92
99
  this.defaultExecutionTarget = toExecutionTarget(config.executionTarget);
93
100
  this._tokenProvider = config.apiKey
94
101
  ? () => config.apiKey
95
- : config.getAccessToken ?? (() => null);
102
+ : (config.getAccessToken ?? (() => null));
96
103
  this.activity = new ActivityClient(transport);
97
104
  this.billing = new BillingClient(transport);
98
105
  this.cursorAccounts = new CursorAccountsClient(transport);
@@ -102,6 +109,7 @@ export class Stigmer extends GeneratedClient {
102
109
  this.github = new GitHubClient(transport);
103
110
  this.manifest = new ManifestClient(transport);
104
111
  this.skill = new RoutedSkillClient(transport, config.fetch);
112
+ this.plugin = new RoutedPluginClient(transport, config.fetch);
105
113
  if (this.defaultExecutionTarget != null) {
106
114
  this._applyExecutionTargetDefaults();
107
115
  }
@@ -124,7 +132,10 @@ export class Stigmer extends GeneratedClient {
124
132
  this.session.create = (input) => origSessionCreate(applySessionDefault(input, target));
125
133
  this.session.apply = (input) => origSessionApply(applySessionDefault(input, target));
126
134
  this.agentExecution.create = (input) => origExecutionCreate(input.sessionSpec
127
- ? { ...input, sessionSpec: applySessionDefault(input.sessionSpec, target) }
135
+ ? {
136
+ ...input,
137
+ sessionSpec: applySessionDefault(input.sessionSpec, target),
138
+ }
128
139
  : input);
129
140
  }
130
141
  /**
package/stigmer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"stigmer.js","sourceRoot":"","sources":["../src/stigmer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stigmer.js","sourceRoot":"","sources":["../src/stigmer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EACL,cAAc,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAC;AAIxF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,OAAQ,SAAQ,eAAe;IAC1C;;;;;;OAMG;IACM,OAAO,CAAS;IAEzB;;;;;;;;OAQG;IACM,KAAK,CAAsC;IAEpD;;;;;;;;;OASG;IACM,sBAAsB,CAA8B;IAEpD,QAAQ,CAAiB;IACzB,OAAO,CAAgB;IAChC,yDAAyD;IAChD,cAAc,CAAuB;IAC9C,uEAAuE;IAC9D,gBAAgB,CAAyB;IACzC,QAAQ,CAAiB;IACzB,MAAM,CAAe;IACrB,MAAM,CAAe;IACrB,QAAQ,CAAiB;IAClC;;;;OAIG;IACe,KAAK,CAAoB;IAC3C;;;;OAIG;IACe,MAAM,CAAqB;IAE5B,cAAc,CAAgB;IAE/C,YAAY,MAAqB;QAC/B,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvB,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC3E,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,sBAAsB,GAAG,iBAAiB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACxE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM;YACjC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAO;YACtB,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAE9D,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACK,6BAA6B;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAuB,CAAC;QAC5C,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CACzD,IAAI,CAAC,cAAc,CACpB,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,EAAE,CAC9B,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,EAAE,CAC7B,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,EAAE,CACrC,mBAAmB,CACjB,KAAK,CAAC,WAAW;YACf,CAAC,CAAC;gBACE,GAAG,KAAK;gBACR,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC;aAC5D;YACH,CAAC,CAAC,KAAK,CACV,CAAC;IACN,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,iBAAiB;QACrB,OAAO,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IACrC,CAAC;CACF;AAED,SAAS,iBAAiB,CACxB,GAA0B;IAE1B,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,eAAe,CAAC,KAAK,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,eAAe,CAAC,KAAK,CAAC;QAC/B;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAQ,EACR,MAAuB;IAEvB,IACE,KAAK,CAAC,eAAe,IAAI,IAAI;QAC7B,KAAK,CAAC,eAAe,KAAK,eAAe,CAAC,WAAW,EACrD,CAAC;QACD,OAAO,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}