@stackfactor/client-api 1.3.6 → 1.5.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.
@@ -24,15 +24,13 @@ export interface StoredAvatar {
24
24
  }
25
25
  /**
26
26
  * A generated avatar, from the run that generated it. The caller says nothing
27
- * about WHICH avatar: the run ticket names the run, and the run's own record
27
+ * about WHICH avatar: its AGENT token names the run, and the run's own record
28
28
  * says which element, type and store. Called by the image agent's event
29
- * handler with the token the execution was started with and the ticket from
30
- * its envelope (`request.runTicket`).
29
+ * handler with the token the execution was started with.
31
30
  * @param {AvatarFile[]} files The PNG for each stored size
32
31
  * @param {Object|null} usage The generator's usage descriptor (`{ cost, tokens }`), so the credits are charged to the element; null when none
33
- * @param {String} token The execution's token
34
- * @param {String} runTicket The ticket from this run's envelope
32
+ * @param {String} token The run's AGENT token (it names the run)
35
33
  * @returns {Promise<StoredAvatar>}
36
34
  */
37
- export declare const storeAvatar: (files: AvatarFile[], usage: Record<string, unknown> | null, token: string, runTicket: string) => Promise<StoredAvatar>;
35
+ export declare const storeAvatar: (files: AvatarFile[], usage: Record<string, unknown> | null, token: string) => Promise<StoredAvatar>;
38
36
  //# sourceMappingURL=avatar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/lib/avatar.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,GACpB,WAAW,MAAM,EACjB,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,QAAO,MAAW,KACjB,OAAO,CAAC,IAAI,CAmBd,CAAC;AAEF,8DAA8D;AAC9D,MAAM,WAAW,UAAU;IACzB,gGAAgG;IAChG,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8BAA8B;AAC9B,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,UAAU,EAAE,EACnB,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACrC,OAAO,MAAM,EACb,WAAW,MAAM,KAChB,OAAO,CAAC,YAAY,CAiBtB,CAAC"}
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/lib/avatar.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,GACpB,WAAW,MAAM,EACjB,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,QAAO,MAAW,KACjB,OAAO,CAAC,IAAI,CAmBd,CAAC;AAEF,8DAA8D;AAC9D,MAAM,WAAW,UAAU;IACzB,gGAAgG;IAChG,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8BAA8B;AAC9B,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,UAAU,EAAE,EACnB,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACrC,OAAO,MAAM,KACZ,OAAO,CAAC,YAAY,CAiBtB,CAAC"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.storeAvatar = exports.getAvatar = void 0;
4
4
  const axiosClient_js_1 = require("./axiosClient.js");
5
- const integration_js_1 = require("./integration.js");
6
5
  /**
7
6
  * Get avatar for an elementId
8
7
  * @param {String} elementId
@@ -33,20 +32,18 @@ const getAvatar = (elementId, type, width, height, token, title = "") => {
33
32
  exports.getAvatar = getAvatar;
34
33
  /**
35
34
  * A generated avatar, from the run that generated it. The caller says nothing
36
- * about WHICH avatar: the run ticket names the run, and the run's own record
35
+ * about WHICH avatar: its AGENT token names the run, and the run's own record
37
36
  * says which element, type and store. Called by the image agent's event
38
- * handler with the token the execution was started with and the ticket from
39
- * its envelope (`request.runTicket`).
37
+ * handler with the token the execution was started with.
40
38
  * @param {AvatarFile[]} files The PNG for each stored size
41
39
  * @param {Object|null} usage The generator's usage descriptor (`{ cost, tokens }`), so the credits are charged to the element; null when none
42
- * @param {String} token The execution's token
43
- * @param {String} runTicket The ticket from this run's envelope
40
+ * @param {String} token The run's AGENT token (it names the run)
44
41
  * @returns {Promise<StoredAvatar>}
45
42
  */
46
- const storeAvatar = (files, usage, token, runTicket) => {
43
+ const storeAvatar = (files, usage, token) => {
47
44
  return new Promise((resolve, reject) => {
48
45
  const request = axiosClient_js_1.client.post("/api/v1/avatar/store", { files, usage }, {
49
- headers: { authorization: token, [integration_js_1.RUN_TICKET_HEADER]: runTicket },
46
+ headers: { authorization: token },
50
47
  });
51
48
  request
52
49
  .then((response) => {
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../src/lib/avatar.ts"],"names":[],"mappings":";;;AACA,qDAA0C;AAC1C,qDAAqD;AAErD;;;;;;;;;GASG;AACI,MAAM,SAAS,GAAG,CACvB,SAAiB,EACjB,IAAY,EACZ,KAAa,EACb,MAAc,EACd,KAAa,EACb,QAAgB,EAAE,EACH,EAAE;IACjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,mBAAmB,GAAG,uBAAM,CAAC,GAAG,CACpC,4BAA4B,SAAS,IAAI,IAAI,IAAI,KAAK,IAAI,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC7H;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,KAAK;aACrB;YACD,YAAY,EAAE,MAAM;SACrB,CACF,CAAC;QACF,mBAAmB;aAChB,IAAI,CAAC,CAAC,QAAuB,EAAE,EAAE;YAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA1BW,QAAA,SAAS,aA0BpB;AAiBF;;;;;;;;;;;GAWG;AACI,MAAM,WAAW,GAAG,CACzB,KAAmB,EACnB,KAAqC,EACrC,KAAa,EACb,SAAiB,EACM,EAAE;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,uBAAM,CAAC,IAAI,CACzB,sBAAsB,EACtB,EAAE,KAAK,EAAE,KAAK,EAAE,EAChB;YACE,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,kCAAiB,CAAC,EAAE,SAAS,EAAE;SAClE,CACF,CAAC;QACF,OAAO;aACJ,IAAI,CAAC,CAAC,QAAuB,EAAE,EAAE;YAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAtBW,QAAA,WAAW,eAsBtB"}
1
+ {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../src/lib/avatar.ts"],"names":[],"mappings":";;;AACA,qDAA0C;AAE1C;;;;;;;;;GASG;AACI,MAAM,SAAS,GAAG,CACvB,SAAiB,EACjB,IAAY,EACZ,KAAa,EACb,MAAc,EACd,KAAa,EACb,QAAgB,EAAE,EACH,EAAE;IACjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,mBAAmB,GAAG,uBAAM,CAAC,GAAG,CACpC,4BAA4B,SAAS,IAAI,IAAI,IAAI,KAAK,IAAI,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC7H;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,KAAK;aACrB;YACD,YAAY,EAAE,MAAM;SACrB,CACF,CAAC;QACF,mBAAmB;aAChB,IAAI,CAAC,CAAC,QAAuB,EAAE,EAAE;YAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA1BW,QAAA,SAAS,aA0BpB;AAiBF;;;;;;;;;GASG;AACI,MAAM,WAAW,GAAG,CACzB,KAAmB,EACnB,KAAqC,EACrC,KAAa,EACU,EAAE;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,uBAAM,CAAC,IAAI,CACzB,sBAAsB,EACtB,EAAE,KAAK,EAAE,KAAK,EAAE,EAChB;YACE,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;SAClC,CACF,CAAC;QACF,OAAO;aACJ,IAAI,CAAC,CAAC,QAAuB,EAAE,EAAE;YAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AArBW,QAAA,WAAW,eAqBtB"}
@@ -99,7 +99,7 @@ export declare const setDefaultIntegration: (id: string, token: string, capabili
99
99
  * resolved configuration, the identity to act as). Called by the agent runtime
100
100
  * in run-once mode with the token the execution was started with.
101
101
  * @param {String} batchJobId The event record the execution was started for
102
- * @param {String} token The execution's token
102
+ * @param {String} token The run's AGENT token (it names the run)
103
103
  */
104
104
  export declare const getExecutionEnvelope: (batchJobId: string, token: string) => Promise<object>;
105
105
  /** One permission an integration may ask an organization for. */
@@ -119,8 +119,6 @@ export interface DeclarablePermission {
119
119
  * @param {String} token Authorization token (Admin - Manage Interoperability)
120
120
  */
121
121
  export declare const getDeclarablePermissions: (token: string) => Promise<DeclarablePermission[]>;
122
- /** The request header an agent returns its run ticket in. */
123
- export declare const RUN_TICKET_HEADER = "x-stackfactor-run-ticket";
124
122
  /** How an execution settles its run. */
125
123
  export declare const EXECUTION_OUTCOME: {
126
124
  readonly COMPLETED: 2;
@@ -144,53 +142,170 @@ export interface SettledExecution {
144
142
  * An execution claiming its run, once: PENDING → RUNNING. Of however many
145
143
  * executions the transport may start for one run, exactly one claim answers
146
144
  * `claimed: true`; the others get `claimed: false` and should exit without
147
- * doing the work. Which run is never sent: the run ticket names it. Called by
148
- * the agent runtime at start, with the token the execution was started with
149
- * (or, for an anonymous run, the ticket as the token).
150
- * @param {String} token The execution's token
151
- * @param {String} runTicket The ticket from this run's envelope
145
+ * doing the work. Which run is never sent: the run's token names it. Called by
146
+ * the agent runtime at start, with the token the execution was started with.
147
+ * @param {String} token The run's AGENT token (it names the run)
152
148
  */
153
- export declare const claimExecution: (token: string, runTicket: string) => Promise<ClaimedExecution>;
149
+ export declare const claimExecution: (token: string) => Promise<ClaimedExecution>;
154
150
  /**
155
151
  * An execution keeping its run alive. Called on a fast cadence (~30 s) while
156
152
  * the handler runs, so a run that stops beating is known to be abandoned.
157
- * @param {String} token The execution's token
158
- * @param {String} runTicket The ticket from this run's envelope
153
+ * @param {String} token The run's AGENT token (it names the run)
159
154
  */
160
- export declare const heartbeatExecution: (token: string, runTicket: string) => Promise<void>;
155
+ export declare const heartbeatExecution: (token: string) => Promise<void>;
161
156
  /**
162
157
  * An execution settling its run as COMPLETED or FAILED, with what it wants
163
158
  * remembered. `settled: false` means the run was no longer running (the
164
159
  * platform's sweeper got there first) and the outcome was not recorded.
165
160
  * @param {Number} status EXECUTION_OUTCOME.COMPLETED or FAILED
166
161
  * @param {*} outcome A result summary, or the error — kept on the run's record
167
- * @param {String} token The execution's token
168
- * @param {String} runTicket The ticket from this run's envelope
169
- */
170
- export declare const settleExecution: (status: number, outcome: unknown, token: string, runTicket: string) => Promise<SettledExecution>;
171
- /** One organization's settings for the calling integration. */
172
- export interface IntegrationTenantSettings {
173
- tenant: {
174
- _id: string;
175
- name: string;
176
- };
177
- /** The tenant-level fields the integration declares, secret ones included. */
178
- settings: Record<string, unknown>;
162
+ * @param {String} token The run's AGENT token (it names the run)
163
+ */
164
+ export declare const settleExecution: (status: number, outcome: unknown, token: string) => Promise<SettledExecution>;
165
+ /** Notification statuses a run may move its own notification to. */
166
+ export declare const RUN_NOTIFICATION_STATUS: {
167
+ readonly INPROGRESS: 5;
168
+ readonly COMPLETED: 6;
169
+ readonly FAILED: 7;
170
+ };
171
+ /** What a run may save its learning content as. */
172
+ export declare const RUN_LEARNING_CONTENT_TYPE: {
173
+ readonly VIDEO: 2;
174
+ readonly TEXT_CONTENT: 3;
175
+ };
176
+ /** A log line a run reports; `type` defaults to "info". */
177
+ export interface RunLogLine {
178
+ type?: "info" | "warning" | "error";
179
+ value: string;
180
+ }
181
+ /** A run's progress as the platform stored it. */
182
+ export interface RunProgress {
183
+ percent: number;
184
+ message: string | null;
185
+ updatedAt: string;
186
+ }
187
+ /** The run's notification after an update; `cancelled` means stop working. */
188
+ export interface RunNotificationState {
189
+ status: number;
190
+ cancelled: boolean;
191
+ }
192
+ /** The answer to a quota consume. `unlimited`: the plan does not meter the type. */
193
+ export interface RunQuotaConsumed {
194
+ unlimited: boolean;
195
+ remaining: number | null;
196
+ }
197
+ /** The answer to a quota refund: the run's total refunded for the type. */
198
+ export interface RunQuotaRefunded {
199
+ refunded: number;
200
+ remaining: number | null;
179
201
  }
202
+ /** The learning content a run saved; `created` is false when it was there already. */
203
+ export interface RunLearningContentSaved {
204
+ learningContentId: string;
205
+ created: boolean;
206
+ }
207
+ /** A learning activity of one of the run's micro-skills. */
208
+ export interface RunActivityTarget {
209
+ microSkillId: string;
210
+ learningActivityId: string;
211
+ }
212
+ /** A scene's narration; `usage` is what synthesising it consumed, when known. */
213
+ export interface RunSceneAudioStored {
214
+ stored: boolean;
215
+ usage: unknown;
216
+ }
217
+ /**
218
+ * Reports how far the run got, with log lines; kept on the run's record (the
219
+ * newest 200 lines).
220
+ * @param {Number} percent 0–100
221
+ * @param {String|null} message A one-line summary, e.g. "micro-skill 4 of 10"
222
+ * @param {RunLogLine[]} log Up to 50 lines
223
+ * @param {String} token The run's AGENT token (it names the run)
224
+ */
225
+ export declare const reportRunProgress: (percent: number, message: string | null, log: RunLogLine[], token: string) => Promise<RunProgress>;
226
+ /**
227
+ * Moves the run's own notification to in progress, completed or failed, with
228
+ * the details the person sees. Resolves `cancelled: true` when the person
229
+ * cancelled it — the notification is left as they left it and the run should
230
+ * stop, clean up and settle.
231
+ * @param {Number} status A RUN_NOTIFICATION_STATUS value
232
+ * @param {*} details What the notification shows: progress, log, …
233
+ * @param {String|null} description Replaces the notification's text; null keeps it
234
+ * @param {String} token The run's AGENT token (it names the run)
235
+ */
236
+ export declare const updateRunNotification: (status: number, details: unknown, description: string | null, token: string) => Promise<RunNotificationState>;
180
237
  /**
181
- * The CALLING integration's own settings, for every organization that has it
182
- * enabled. What a scheduled run — which starts once for the platform, with no
183
- * identity — reads to find the tenants it works on. Nothing names an
184
- * integration: the run ticket the platform put in the run's envelope
185
- * (`request.runTicket`) decides which one is answered for.
186
- * @param {String} token The integration's own API token (an admin-tenant
187
- * service account's, holding Admin - Read Own Integration Settings)
188
- * @param {String} runTicket The ticket from this run's envelope
189
- */
190
- export declare const getOwnTenantSettings: (token: string, runTicket: string) => Promise<{
191
- integrationId: string;
192
- tenants: IntegrationTenantSettings[];
238
+ * Consumes generation quota (a GENERATE_* type) for the person the run acts
239
+ * for. Rejects with 400 QUOTA_EXCEEDED when fewer than `amount` remain.
240
+ * @param {String} type e.g. "GENERATE_LEARNING_CONTENT"
241
+ * @param {Number} amount 1–100
242
+ * @param {String} token The run's AGENT token (it names the run)
243
+ */
244
+ export declare const consumeRunQuota: (type: string, amount: number, token: string) => Promise<RunQuotaConsumed>;
245
+ /**
246
+ * Refunds quota this same run consumed and has not refunded yet — never more;
247
+ * a larger refund rejects with 422.
248
+ * @param {String} type The type the run consumed
249
+ * @param {Number} amount 1–100
250
+ * @param {String} token The run's AGENT token (it names the run)
251
+ */
252
+ export declare const refundRunQuota: (type: string, amount: number, token: string) => Promise<RunQuotaRefunded>;
253
+ /**
254
+ * Saves a micro-skill of the learning content the run was started for — a new
255
+ * one, or a new draft of one it has. The parent does not need to exist yet.
256
+ * @param {Object} microSkill `microSkillId` plus learning activities, objectives, …
257
+ * @param {String} token The run's AGENT token (it names the run)
258
+ */
259
+ export declare const saveRunMicroSkill: (microSkill: {
260
+ microSkillId: string;
261
+ [key: string]: unknown;
262
+ }, token: string) => Promise<object>;
263
+ /**
264
+ * Deletes a micro-skill of the run's learning content by its record id, or all
265
+ * of them when `id` is null — what a cancelled or failed run cleans up.
266
+ * @param {String|null} id The micro-skill record's id, or null for all
267
+ * @param {String} token The run's AGENT token (it names the run)
268
+ */
269
+ export declare const deleteRunMicroSkills: (id: string | null, token: string) => Promise<{
270
+ deleted: number;
193
271
  }>;
272
+ /**
273
+ * Saves the learning content the run was started for, as video or text
274
+ * content, with the settings it was generated with. It is recorded as the work
275
+ * of the person the run acts for. Save it once its micro-skills are stored.
276
+ * @param {Number} type A RUN_LEARNING_CONTENT_TYPE value
277
+ * @param {Object|null} settings The generation settings; null keeps the defaults
278
+ * @param {String} token The run's AGENT token (it names the run)
279
+ */
280
+ export declare const saveRunLearningContent: (type: number, settings: object | null, token: string) => Promise<RunLearningContentSaved>;
281
+ /**
282
+ * Stores an image or a video clip of one of the run's learning activities
283
+ * (PNG, JPEG or MP4, up to 100 MB). Any other type rejects with 400.
284
+ * @param {Object} target The activity, and the `mediaId` the file is stored as
285
+ * @param {Blob|Uint8Array} media The file's bytes (a Buffer is a Uint8Array)
286
+ * @param {String} mimeType "image/png", "image/jpeg" or "video/mp4"
287
+ * @param {String} token The run's AGENT token (it names the run)
288
+ */
289
+ export declare const storeRunMedia: (target: RunActivityTarget & {
290
+ mediaId: string;
291
+ }, media: Blob | Uint8Array, mimeType: string, token: string) => Promise<{
292
+ mediaId: string;
293
+ }>;
294
+ /**
295
+ * Has the platform synthesise the narration of one scene of one of the run's
296
+ * video activities and store it where the player reads it. Resolves
297
+ * `stored: false` when there was nothing to store.
298
+ * @param {Object} target The activity, and the `sceneId` the narration is for
299
+ * @param {Object} script The narration: `items`, each with its `text`
300
+ * @param {String} token The run's AGENT token (it names the run)
301
+ */
302
+ export declare const storeRunSceneAudio: (target: RunActivityTarget & {
303
+ sceneId: string;
304
+ }, script: {
305
+ items: {
306
+ text: string;
307
+ }[];
308
+ }, token: string) => Promise<RunSceneAudioStored>;
194
309
  /**
195
310
  * Get an integration agent's live health (cheap: deploy state + Cloud Run
196
311
  * readiness; does not contact the agent). Use for the live status on the cards.
@@ -1 +1 @@
1
- {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/lib/integration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/lib/integration.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.testIntegrationHealth = exports.getIntegrationHealth = exports.getOwnTenantSettings = exports.settleExecution = exports.heartbeatExecution = exports.claimExecution = exports.EXECUTION_OUTCOME = exports.RUN_TICKET_HEADER = exports.getDeclarablePermissions = exports.getExecutionEnvelope = exports.setDefaultIntegration = exports.setIntegrationInformation = exports.publishIntegration = exports.getEnabledContentProviders = exports.getContentInformationByUrlFromBrowser = exports.getContentInformationByUrl = exports.getIntegrationsByCapability = exports.getIntegrationsList = exports.getIntegrationInformationById = exports.discardIntegrationChanges = exports.deleteIntegration = exports.createIntegration = void 0;
6
+ exports.testIntegrationHealth = exports.getIntegrationHealth = exports.storeRunSceneAudio = exports.storeRunMedia = exports.saveRunLearningContent = exports.deleteRunMicroSkills = exports.saveRunMicroSkill = exports.refundRunQuota = exports.consumeRunQuota = exports.updateRunNotification = exports.reportRunProgress = exports.RUN_LEARNING_CONTENT_TYPE = exports.RUN_NOTIFICATION_STATUS = exports.settleExecution = exports.heartbeatExecution = exports.claimExecution = exports.EXECUTION_OUTCOME = exports.getDeclarablePermissions = exports.getExecutionEnvelope = exports.setDefaultIntegration = exports.setIntegrationInformation = exports.publishIntegration = exports.getEnabledContentProviders = exports.getContentInformationByUrlFromBrowser = exports.getContentInformationByUrl = exports.getIntegrationsByCapability = exports.getIntegrationsList = exports.getIntegrationInformationById = exports.discardIntegrationChanges = exports.deleteIntegration = exports.createIntegration = void 0;
7
7
  const axiosClient_js_1 = require("./axiosClient.js");
8
8
  const axios_1 = __importDefault(require("axios"));
9
9
  const node_html_parser_1 = __importDefault(require("node-html-parser"));
@@ -358,7 +358,7 @@ exports.setDefaultIntegration = setDefaultIntegration;
358
358
  * resolved configuration, the identity to act as). Called by the agent runtime
359
359
  * in run-once mode with the token the execution was started with.
360
360
  * @param {String} batchJobId The event record the execution was started for
361
- * @param {String} token The execution's token
361
+ * @param {String} token The run's AGENT token (it names the run)
362
362
  */
363
363
  const getExecutionEnvelope = (batchJobId, token) => {
364
364
  return new Promise((resolve, reject) => {
@@ -396,15 +396,17 @@ const getDeclarablePermissions = (token) => {
396
396
  });
397
397
  };
398
398
  exports.getDeclarablePermissions = getDeclarablePermissions;
399
- /** The request header an agent returns its run ticket in. */
400
- exports.RUN_TICKET_HEADER = "x-stackfactor-run-ticket";
401
399
  /** How an execution settles its run. */
402
400
  exports.EXECUTION_OUTCOME = {
403
401
  COMPLETED: 2,
404
402
  FAILED: 3,
405
403
  };
406
- const lifecycleHeaders = (token, runTicket) => ({
407
- headers: { authorization: token, [exports.RUN_TICKET_HEADER]: runTicket },
404
+ /**
405
+ * A run's calls carry one credential: the AGENT token the platform minted for
406
+ * it, which names the run — so no call here says which run it is.
407
+ */
408
+ const lifecycleHeaders = (token) => ({
409
+ headers: { authorization: token },
408
410
  });
409
411
  /**
410
412
  * Resolves the lifecycle answer whether the platform said yes (200) or "not
@@ -427,23 +429,20 @@ const lifecycleAnswer = (request, resolve, reject) => {
427
429
  * An execution claiming its run, once: PENDING → RUNNING. Of however many
428
430
  * executions the transport may start for one run, exactly one claim answers
429
431
  * `claimed: true`; the others get `claimed: false` and should exit without
430
- * doing the work. Which run is never sent: the run ticket names it. Called by
431
- * the agent runtime at start, with the token the execution was started with
432
- * (or, for an anonymous run, the ticket as the token).
433
- * @param {String} token The execution's token
434
- * @param {String} runTicket The ticket from this run's envelope
432
+ * doing the work. Which run is never sent: the run's token names it. Called by
433
+ * the agent runtime at start, with the token the execution was started with.
434
+ * @param {String} token The run's AGENT token (it names the run)
435
435
  */
436
- const claimExecution = (token, runTicket) => new Promise((resolve, reject) => lifecycleAnswer(axiosClient_js_1.client.post("/api/v1/integrations/executions/claim", {}, lifecycleHeaders(token, runTicket)), resolve, reject));
436
+ const claimExecution = (token) => new Promise((resolve, reject) => lifecycleAnswer(axiosClient_js_1.client.post("/api/v1/integrations/executions/claim", {}, lifecycleHeaders(token)), resolve, reject));
437
437
  exports.claimExecution = claimExecution;
438
438
  /**
439
439
  * An execution keeping its run alive. Called on a fast cadence (~30 s) while
440
440
  * the handler runs, so a run that stops beating is known to be abandoned.
441
- * @param {String} token The execution's token
442
- * @param {String} runTicket The ticket from this run's envelope
441
+ * @param {String} token The run's AGENT token (it names the run)
443
442
  */
444
- const heartbeatExecution = (token, runTicket) => {
443
+ const heartbeatExecution = (token) => {
445
444
  return new Promise((resolve, reject) => {
446
- const request = axiosClient_js_1.client.post("/api/v1/integrations/executions/heartbeat", {}, lifecycleHeaders(token, runTicket));
445
+ const request = axiosClient_js_1.client.post("/api/v1/integrations/executions/heartbeat", {}, lifecycleHeaders(token));
447
446
  request
448
447
  .then(() => resolve())
449
448
  .catch((error) => reject(error));
@@ -456,36 +455,151 @@ exports.heartbeatExecution = heartbeatExecution;
456
455
  * platform's sweeper got there first) and the outcome was not recorded.
457
456
  * @param {Number} status EXECUTION_OUTCOME.COMPLETED or FAILED
458
457
  * @param {*} outcome A result summary, or the error — kept on the run's record
459
- * @param {String} token The execution's token
460
- * @param {String} runTicket The ticket from this run's envelope
458
+ * @param {String} token The run's AGENT token (it names the run)
461
459
  */
462
- const settleExecution = (status, outcome, token, runTicket) => new Promise((resolve, reject) => lifecycleAnswer(axiosClient_js_1.client.post("/api/v1/integrations/executions/settle", { status, outcome: outcome ?? null }, lifecycleHeaders(token, runTicket)), resolve, reject));
460
+ const settleExecution = (status, outcome, token) => new Promise((resolve, reject) => lifecycleAnswer(axiosClient_js_1.client.post("/api/v1/integrations/executions/settle", { status, outcome: outcome ?? null }, lifecycleHeaders(token)), resolve, reject));
463
461
  exports.settleExecution = settleExecution;
462
+ // ── A run's own state while it runs ─────────────────────────────────────
463
+ //
464
+ // What an agent run changes about itself: progress, its notification, the
465
+ // generation quota it spends and the micro-skills of the learning content it
466
+ // generates. Every call needs the run's AGENT token (the one the execution was
467
+ // started with — never a person's session), which names the run, and the
468
+ // platform answers for that one run only: nothing here names a batch job,
469
+ // notification, quota record or learning content. The integration
470
+ // must declare the matching permission, and the tenant must have accepted it:
471
+ // progress, notification System - Update Own Run State
472
+ // quota System - Manage Own Run Quota
473
+ // micro-skills System - Manage Own Run Micro-Skills
474
+ // learning content, media, audio
475
+ // System - Manage Own Run Learning Content
476
+ /** Notification statuses a run may move its own notification to. */
477
+ exports.RUN_NOTIFICATION_STATUS = {
478
+ INPROGRESS: 5,
479
+ COMPLETED: 6,
480
+ FAILED: 7,
481
+ };
482
+ /** What a run may save its learning content as. */
483
+ exports.RUN_LEARNING_CONTENT_TYPE = {
484
+ VIDEO: 2,
485
+ TEXT_CONTENT: 3,
486
+ };
487
+ /** The media types a run may store, and the file name each is sent under. */
488
+ const RUN_MEDIA_FILE_NAMES = {
489
+ "image/jpeg": "media.jpg",
490
+ "image/png": "media.png",
491
+ "video/mp4": "media.mp4",
492
+ };
493
+ const runStateCall = (request) => new Promise((resolve, reject) => {
494
+ request
495
+ .then((response) => resolve(response.data))
496
+ .catch((error) => reject(error));
497
+ });
464
498
  /**
465
- * The CALLING integration's own settings, for every organization that has it
466
- * enabled. What a scheduled run — which starts once for the platform, with no
467
- * identity — reads to find the tenants it works on. Nothing names an
468
- * integration: the run ticket the platform put in the run's envelope
469
- * (`request.runTicket`) decides which one is answered for.
470
- * @param {String} token The integration's own API token (an admin-tenant
471
- * service account's, holding Admin - Read Own Integration Settings)
472
- * @param {String} runTicket The ticket from this run's envelope
499
+ * Reports how far the run got, with log lines; kept on the run's record (the
500
+ * newest 200 lines).
501
+ * @param {Number} percent 0–100
502
+ * @param {String|null} message A one-line summary, e.g. "micro-skill 4 of 10"
503
+ * @param {RunLogLine[]} log Up to 50 lines
504
+ * @param {String} token The run's AGENT token (it names the run)
473
505
  */
474
- const getOwnTenantSettings = (token, runTicket) => {
475
- return new Promise((resolve, reject) => {
476
- const request = axiosClient_js_1.client.get("/api/v1/integrations/mine/tenant-settings", {
477
- headers: { authorization: token, [exports.RUN_TICKET_HEADER]: runTicket },
478
- });
479
- request
480
- .then((response) => {
481
- resolve(response.data);
482
- })
483
- .catch((error) => {
484
- reject(error);
485
- });
486
- });
506
+ const reportRunProgress = (percent, message, log, token) => runStateCall(axiosClient_js_1.client.post("/api/v1/integrations/executions/progress", { percent, message, log }, lifecycleHeaders(token)));
507
+ exports.reportRunProgress = reportRunProgress;
508
+ /**
509
+ * Moves the run's own notification to in progress, completed or failed, with
510
+ * the details the person sees. Resolves `cancelled: true` when the person
511
+ * cancelled it — the notification is left as they left it and the run should
512
+ * stop, clean up and settle.
513
+ * @param {Number} status A RUN_NOTIFICATION_STATUS value
514
+ * @param {*} details What the notification shows: progress, log, …
515
+ * @param {String|null} description Replaces the notification's text; null keeps it
516
+ * @param {String} token The run's AGENT token (it names the run)
517
+ */
518
+ const updateRunNotification = (status, details, description, token) => runStateCall(axiosClient_js_1.client.post("/api/v1/integrations/executions/notification", { status, details: details ?? null, description }, lifecycleHeaders(token)));
519
+ exports.updateRunNotification = updateRunNotification;
520
+ /**
521
+ * Consumes generation quota (a GENERATE_* type) for the person the run acts
522
+ * for. Rejects with 400 QUOTA_EXCEEDED when fewer than `amount` remain.
523
+ * @param {String} type e.g. "GENERATE_LEARNING_CONTENT"
524
+ * @param {Number} amount 1–100
525
+ * @param {String} token The run's AGENT token (it names the run)
526
+ */
527
+ const consumeRunQuota = (type, amount, token) => runStateCall(axiosClient_js_1.client.post("/api/v1/integrations/executions/quota/consume", { type, amount }, lifecycleHeaders(token)));
528
+ exports.consumeRunQuota = consumeRunQuota;
529
+ /**
530
+ * Refunds quota this same run consumed and has not refunded yet — never more;
531
+ * a larger refund rejects with 422.
532
+ * @param {String} type The type the run consumed
533
+ * @param {Number} amount 1–100
534
+ * @param {String} token The run's AGENT token (it names the run)
535
+ */
536
+ const refundRunQuota = (type, amount, token) => runStateCall(axiosClient_js_1.client.post("/api/v1/integrations/executions/quota/refund", { type, amount }, lifecycleHeaders(token)));
537
+ exports.refundRunQuota = refundRunQuota;
538
+ /**
539
+ * Saves a micro-skill of the learning content the run was started for — a new
540
+ * one, or a new draft of one it has. The parent does not need to exist yet.
541
+ * @param {Object} microSkill `microSkillId` plus learning activities, objectives, …
542
+ * @param {String} token The run's AGENT token (it names the run)
543
+ */
544
+ const saveRunMicroSkill = (microSkill, token) => runStateCall(axiosClient_js_1.client.put("/api/v1/integrations/executions/microskills", microSkill, lifecycleHeaders(token)));
545
+ exports.saveRunMicroSkill = saveRunMicroSkill;
546
+ /**
547
+ * Deletes a micro-skill of the run's learning content by its record id, or all
548
+ * of them when `id` is null — what a cancelled or failed run cleans up.
549
+ * @param {String|null} id The micro-skill record's id, or null for all
550
+ * @param {String} token The run's AGENT token (it names the run)
551
+ */
552
+ const deleteRunMicroSkills = (id, token) => runStateCall(axiosClient_js_1.client.delete(id
553
+ ? `/api/v1/integrations/executions/microskills/${encodeURIComponent(id)}`
554
+ : "/api/v1/integrations/executions/microskills", lifecycleHeaders(token)));
555
+ exports.deleteRunMicroSkills = deleteRunMicroSkills;
556
+ /**
557
+ * Saves the learning content the run was started for, as video or text
558
+ * content, with the settings it was generated with. It is recorded as the work
559
+ * of the person the run acts for. Save it once its micro-skills are stored.
560
+ * @param {Number} type A RUN_LEARNING_CONTENT_TYPE value
561
+ * @param {Object|null} settings The generation settings; null keeps the defaults
562
+ * @param {String} token The run's AGENT token (it names the run)
563
+ */
564
+ const saveRunLearningContent = (type, settings, token) => runStateCall(axiosClient_js_1.client.put("/api/v1/integrations/executions/learning-content", { type, settings }, lifecycleHeaders(token)));
565
+ exports.saveRunLearningContent = saveRunLearningContent;
566
+ /**
567
+ * Stores an image or a video clip of one of the run's learning activities
568
+ * (PNG, JPEG or MP4, up to 100 MB). Any other type rejects with 400.
569
+ * @param {Object} target The activity, and the `mediaId` the file is stored as
570
+ * @param {Blob|Uint8Array} media The file's bytes (a Buffer is a Uint8Array)
571
+ * @param {String} mimeType "image/png", "image/jpeg" or "video/mp4"
572
+ * @param {String} token The run's AGENT token (it names the run)
573
+ */
574
+ const storeRunMedia = (target, media, mimeType, token) => {
575
+ const formData = new FormData();
576
+ formData.append("microSkillId", target.microSkillId);
577
+ formData.append("learningActivityId", target.learningActivityId);
578
+ formData.append("mediaId", target.mediaId);
579
+ formData.append("file", new Blob([media], { type: mimeType }), RUN_MEDIA_FILE_NAMES[mimeType] ?? "media.bin");
580
+ return runStateCall(axiosClient_js_1.client.put("/api/v1/integrations/executions/media", formData, {
581
+ headers: {
582
+ authorization: token,
583
+ "Content-Type": "multipart/form-data",
584
+ },
585
+ }));
487
586
  };
488
- exports.getOwnTenantSettings = getOwnTenantSettings;
587
+ exports.storeRunMedia = storeRunMedia;
588
+ /**
589
+ * Has the platform synthesise the narration of one scene of one of the run's
590
+ * video activities and store it where the player reads it. Resolves
591
+ * `stored: false` when there was nothing to store.
592
+ * @param {Object} target The activity, and the `sceneId` the narration is for
593
+ * @param {Object} script The narration: `items`, each with its `text`
594
+ * @param {String} token The run's AGENT token (it names the run)
595
+ */
596
+ const storeRunSceneAudio = (target, script, token) => runStateCall(axiosClient_js_1.client.post("/api/v1/integrations/executions/audio", {
597
+ microSkillId: target.microSkillId,
598
+ learningActivityId: target.learningActivityId,
599
+ sceneId: target.sceneId,
600
+ script,
601
+ }, lifecycleHeaders(token)));
602
+ exports.storeRunSceneAudio = storeRunSceneAudio;
489
603
  /**
490
604
  * Get an integration agent's live health (cheap: deploy state + Cloud Run
491
605
  * readiness; does not contact the agent). Use for the live status on the cards.