@sanoma-ai/workflows 0.11.15 → 0.11.16

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 (89) hide show
  1. package/README.md +10 -3
  2. package/dist/app-steps.d.ts +17 -0
  3. package/dist/app-steps.js +43 -0
  4. package/dist/app-steps.js.map +1 -0
  5. package/dist/app-workflows.d.ts +170 -0
  6. package/dist/app-workflows.js +107 -0
  7. package/dist/app-workflows.js.map +1 -0
  8. package/dist/apply-steps.js +3 -9
  9. package/dist/apply-steps.js.map +1 -1
  10. package/dist/approvals.d.ts +1 -1
  11. package/dist/approvals.js +3 -0
  12. package/dist/approvals.js.map +1 -1
  13. package/dist/call.d.ts +2 -1
  14. package/dist/call.js +2 -1
  15. package/dist/call.js.map +1 -1
  16. package/dist/change-steps.js +11 -17
  17. package/dist/change-steps.js.map +1 -1
  18. package/dist/chat-steps.d.ts +5 -0
  19. package/dist/chat-steps.js +107 -0
  20. package/dist/chat-steps.js.map +1 -0
  21. package/dist/chat-workflow.d.ts +43 -0
  22. package/dist/chat-workflow.js +47 -0
  23. package/dist/chat-workflow.js.map +1 -0
  24. package/dist/chats.d.ts +23 -4
  25. package/dist/chats.js +54 -7
  26. package/dist/chats.js.map +1 -1
  27. package/dist/client.d.ts +42 -31
  28. package/dist/client.js +118 -105
  29. package/dist/client.js.map +1 -1
  30. package/dist/config.js +14 -1
  31. package/dist/config.js.map +1 -1
  32. package/dist/db/company.d.ts +259 -2
  33. package/dist/db/company.js +32 -1
  34. package/dist/db/company.js.map +1 -1
  35. package/dist/db.d.ts +15 -0
  36. package/dist/db.js +42 -2
  37. package/dist/db.js.map +1 -1
  38. package/dist/follow-steps.d.ts +8 -0
  39. package/dist/follow-steps.js +113 -0
  40. package/dist/follow-steps.js.map +1 -0
  41. package/dist/follow-workflow.d.ts +56 -0
  42. package/dist/follow-workflow.js +50 -0
  43. package/dist/follow-workflow.js.map +1 -0
  44. package/dist/index.d.ts +5 -2
  45. package/dist/index.js +4 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/run.d.ts +39 -0
  48. package/dist/run.js +15 -0
  49. package/dist/run.js.map +1 -1
  50. package/dist/sandbox.d.ts +10 -0
  51. package/dist/sandbox.js +42 -4
  52. package/dist/sandbox.js.map +1 -1
  53. package/dist/scenario.d.ts +19 -0
  54. package/dist/scenario.js.map +1 -1
  55. package/dist/seal.d.ts +7 -0
  56. package/dist/seal.js +14 -2
  57. package/dist/seal.js.map +1 -1
  58. package/dist/shared.d.ts +34 -2
  59. package/dist/shared.js +39 -2
  60. package/dist/shared.js.map +1 -1
  61. package/dist/worker.d.ts +8 -0
  62. package/dist/worker.js +116 -10
  63. package/dist/worker.js.map +1 -1
  64. package/drizzle/company/0002_runs_tell_the_app.sql +27 -0
  65. package/drizzle/company/meta/0002_snapshot.json +819 -0
  66. package/drizzle/company/meta/_journal.json +7 -0
  67. package/package.json +1 -1
  68. package/src/app-steps.ts +67 -0
  69. package/src/app-workflows.ts +251 -0
  70. package/src/apply-steps.ts +3 -9
  71. package/src/approvals.ts +3 -1
  72. package/src/call.ts +2 -1
  73. package/src/change-steps.ts +10 -17
  74. package/src/chat-steps.ts +117 -0
  75. package/src/chat-workflow.ts +69 -0
  76. package/src/chats.ts +80 -14
  77. package/src/client.ts +154 -109
  78. package/src/config.ts +14 -0
  79. package/src/db/company.ts +49 -2
  80. package/src/db.ts +51 -3
  81. package/src/follow-steps.ts +129 -0
  82. package/src/follow-workflow.ts +88 -0
  83. package/src/index.ts +19 -1
  84. package/src/run.ts +41 -0
  85. package/src/sandbox.ts +41 -4
  86. package/src/scenario.ts +17 -0
  87. package/src/seal.ts +16 -2
  88. package/src/shared.ts +47 -2
  89. package/src/worker.ts +149 -10
@@ -1,6 +1,7 @@
1
- import type { UIMessage } from "ai";
1
+ import type { UIMessage, UIMessageChunk } from "ai";
2
2
  import type { ConnectionStatus } from "../connection.ts";
3
3
  import type { LedgerRecord } from "../ledger.ts";
4
+ import type { RunCheck } from "../scenario.ts";
4
5
  import type { SecretLocation } from "../secret-store.ts";
5
6
  /** The credentials set from the app, each sealed under its namespace and name. */
6
7
  export declare const credentials: import("drizzle-orm/pg-core").PgTableWithColumns<{
@@ -385,7 +386,7 @@ export declare const wakeup: import("drizzle-orm/pg-core").PgTableWithColumns<{
385
386
  };
386
387
  dialect: 'pg';
387
388
  }>;
388
- /** The operator agent's chats (`chats.ts`): who each is for, its engine and its draft. */
389
+ /** The operator agent's chats (`chats.ts`): who each is for, its engine, its draft and the turn last begun (its run's id). */
389
390
  export declare const chats: import("drizzle-orm/pg-core").PgTableWithColumns<{
390
391
  name: "sanoma_chats";
391
392
  schema: undefined;
@@ -492,6 +493,23 @@ export declare const chats: import("drizzle-orm/pg-core").PgTableWithColumns<{
492
493
  identity: undefined;
493
494
  generated: undefined;
494
495
  }, {}, {}>;
496
+ turn: import("drizzle-orm/pg-core").PgColumn<{
497
+ name: "turn";
498
+ tableName: "sanoma_chats";
499
+ dataType: "string";
500
+ columnType: "PgText";
501
+ data: string;
502
+ driverParam: string;
503
+ notNull: false;
504
+ hasDefault: false;
505
+ isPrimaryKey: false;
506
+ isAutoincrement: false;
507
+ hasRuntimeDefault: false;
508
+ enumValues: [string, ...string[]];
509
+ baseColumn: never;
510
+ identity: undefined;
511
+ generated: undefined;
512
+ }, {}, {}>;
495
513
  };
496
514
  dialect: 'pg';
497
515
  }>;
@@ -573,6 +591,88 @@ export declare const chatMessages: import("drizzle-orm/pg-core").PgTableWithColu
573
591
  };
574
592
  dialect: 'pg';
575
593
  }>;
594
+ /**
595
+ * The reply a chat turn streams, as the worker writes it (`Chats.append`): its UI message stream's
596
+ * chunks in `seq` order, then a row with none, its end. The app streams them to the browser; a
597
+ * chat's turn's rows go when its next turn begins.
598
+ */
599
+ export declare const chatChunks: import("drizzle-orm/pg-core").PgTableWithColumns<{
600
+ name: "sanoma_chat_chunks";
601
+ schema: undefined;
602
+ columns: {
603
+ chatId: import("drizzle-orm/pg-core").PgColumn<{
604
+ name: "chatId";
605
+ tableName: "sanoma_chat_chunks";
606
+ dataType: "string";
607
+ columnType: "PgText";
608
+ data: string;
609
+ driverParam: string;
610
+ notNull: true;
611
+ hasDefault: false;
612
+ isPrimaryKey: false;
613
+ isAutoincrement: false;
614
+ hasRuntimeDefault: false;
615
+ enumValues: [string, ...string[]];
616
+ baseColumn: never;
617
+ identity: undefined;
618
+ generated: undefined;
619
+ }, {}, {}>;
620
+ runId: import("drizzle-orm/pg-core").PgColumn<{
621
+ name: "runId";
622
+ tableName: "sanoma_chat_chunks";
623
+ dataType: "string";
624
+ columnType: "PgText";
625
+ data: string;
626
+ driverParam: string;
627
+ notNull: true;
628
+ hasDefault: false;
629
+ isPrimaryKey: false;
630
+ isAutoincrement: false;
631
+ hasRuntimeDefault: false;
632
+ enumValues: [string, ...string[]];
633
+ baseColumn: never;
634
+ identity: undefined;
635
+ generated: undefined;
636
+ }, {}, {}>;
637
+ seq: import("drizzle-orm/pg-core").PgColumn<{
638
+ name: "seq";
639
+ tableName: "sanoma_chat_chunks";
640
+ dataType: "number";
641
+ columnType: "PgInteger";
642
+ data: number;
643
+ driverParam: string | number;
644
+ notNull: true;
645
+ hasDefault: false;
646
+ isPrimaryKey: false;
647
+ isAutoincrement: false;
648
+ hasRuntimeDefault: false;
649
+ enumValues: undefined;
650
+ baseColumn: never;
651
+ identity: undefined;
652
+ generated: undefined;
653
+ }, {}, {}>;
654
+ chunk: import("drizzle-orm/pg-core").PgColumn<{
655
+ name: "chunk";
656
+ tableName: "sanoma_chat_chunks";
657
+ dataType: "json";
658
+ columnType: "PgJsonb";
659
+ data: UIMessageChunk;
660
+ driverParam: unknown;
661
+ notNull: false;
662
+ hasDefault: false;
663
+ isPrimaryKey: false;
664
+ isAutoincrement: false;
665
+ hasRuntimeDefault: false;
666
+ enumValues: undefined;
667
+ baseColumn: never;
668
+ identity: undefined;
669
+ generated: undefined;
670
+ }, {}, {
671
+ $type: UIMessageChunk;
672
+ }>;
673
+ };
674
+ dialect: 'pg';
675
+ }>;
576
676
  /** The api tokens (`tokens.ts`): each one's SHA-256, never the token, whom it acts for, its groups, and when it was revoked. */
577
677
  export declare const apiTokens: import("drizzle-orm/pg-core").PgTableWithColumns<{
578
678
  name: "sanoma_api_tokens";
@@ -1150,3 +1250,160 @@ export declare const connectionSetups: import("drizzle-orm/pg-core").PgTableWith
1150
1250
  };
1151
1251
  dialect: 'pg';
1152
1252
  }>;
1253
+ /**
1254
+ * How far each app taken from a source is behind it, as the worker last checked (`writeAppsBehind`):
1255
+ * one row per app folder, its count of commits or why it could not be told.
1256
+ */
1257
+ export declare const appBehind: import("drizzle-orm/pg-core").PgTableWithColumns<{
1258
+ name: "sanoma_app_behind";
1259
+ schema: undefined;
1260
+ columns: {
1261
+ folder: import("drizzle-orm/pg-core").PgColumn<{
1262
+ name: "folder";
1263
+ tableName: "sanoma_app_behind";
1264
+ dataType: "string";
1265
+ columnType: "PgText";
1266
+ data: string;
1267
+ driverParam: string;
1268
+ notNull: true;
1269
+ hasDefault: false;
1270
+ isPrimaryKey: true;
1271
+ isAutoincrement: false;
1272
+ hasRuntimeDefault: false;
1273
+ enumValues: [string, ...string[]];
1274
+ baseColumn: never;
1275
+ identity: undefined;
1276
+ generated: undefined;
1277
+ }, {}, {}>;
1278
+ behind: import("drizzle-orm/pg-core").PgColumn<{
1279
+ name: "behind";
1280
+ tableName: "sanoma_app_behind";
1281
+ dataType: "number";
1282
+ columnType: "PgInteger";
1283
+ data: number;
1284
+ driverParam: string | number;
1285
+ notNull: false;
1286
+ hasDefault: false;
1287
+ isPrimaryKey: false;
1288
+ isAutoincrement: false;
1289
+ hasRuntimeDefault: false;
1290
+ enumValues: undefined;
1291
+ baseColumn: never;
1292
+ identity: undefined;
1293
+ generated: undefined;
1294
+ }, {}, {}>;
1295
+ error: import("drizzle-orm/pg-core").PgColumn<{
1296
+ name: "error";
1297
+ tableName: "sanoma_app_behind";
1298
+ dataType: "string";
1299
+ columnType: "PgText";
1300
+ data: string;
1301
+ driverParam: string;
1302
+ notNull: false;
1303
+ hasDefault: false;
1304
+ isPrimaryKey: false;
1305
+ isAutoincrement: false;
1306
+ hasRuntimeDefault: false;
1307
+ enumValues: [string, ...string[]];
1308
+ baseColumn: never;
1309
+ identity: undefined;
1310
+ generated: undefined;
1311
+ }, {}, {}>;
1312
+ checkedAt: import("drizzle-orm/pg-core").PgColumn<{
1313
+ name: "checkedAt";
1314
+ tableName: "sanoma_app_behind";
1315
+ dataType: "date";
1316
+ columnType: "PgTimestamp";
1317
+ data: Date;
1318
+ driverParam: string;
1319
+ notNull: true;
1320
+ hasDefault: true;
1321
+ isPrimaryKey: false;
1322
+ isAutoincrement: false;
1323
+ hasRuntimeDefault: false;
1324
+ enumValues: undefined;
1325
+ baseColumn: never;
1326
+ identity: undefined;
1327
+ generated: undefined;
1328
+ }, {}, {}>;
1329
+ };
1330
+ dialect: 'pg';
1331
+ }>;
1332
+ /** Each sandbox run's checks against its scenario, as the worker last ran them (`recordChecks` in sandbox.ts): one row per run. */
1333
+ export declare const runChecks: import("drizzle-orm/pg-core").PgTableWithColumns<{
1334
+ name: "sanoma_run_checks";
1335
+ schema: undefined;
1336
+ columns: {
1337
+ runId: import("drizzle-orm/pg-core").PgColumn<{
1338
+ name: "runId";
1339
+ tableName: "sanoma_run_checks";
1340
+ dataType: "string";
1341
+ columnType: "PgText";
1342
+ data: string;
1343
+ driverParam: string;
1344
+ notNull: true;
1345
+ hasDefault: false;
1346
+ isPrimaryKey: true;
1347
+ isAutoincrement: false;
1348
+ hasRuntimeDefault: false;
1349
+ enumValues: [string, ...string[]];
1350
+ baseColumn: never;
1351
+ identity: undefined;
1352
+ generated: undefined;
1353
+ }, {}, {}>;
1354
+ checks: import("drizzle-orm/pg-core").PgColumn<{
1355
+ name: "checks";
1356
+ tableName: "sanoma_run_checks";
1357
+ dataType: "json";
1358
+ columnType: "PgJsonb";
1359
+ data: RunCheck[];
1360
+ driverParam: unknown;
1361
+ notNull: false;
1362
+ hasDefault: false;
1363
+ isPrimaryKey: false;
1364
+ isAutoincrement: false;
1365
+ hasRuntimeDefault: false;
1366
+ enumValues: undefined;
1367
+ baseColumn: never;
1368
+ identity: undefined;
1369
+ generated: undefined;
1370
+ }, {}, {
1371
+ $type: RunCheck[];
1372
+ }>;
1373
+ error: import("drizzle-orm/pg-core").PgColumn<{
1374
+ name: "error";
1375
+ tableName: "sanoma_run_checks";
1376
+ dataType: "string";
1377
+ columnType: "PgText";
1378
+ data: string;
1379
+ driverParam: string;
1380
+ notNull: false;
1381
+ hasDefault: false;
1382
+ isPrimaryKey: false;
1383
+ isAutoincrement: false;
1384
+ hasRuntimeDefault: false;
1385
+ enumValues: [string, ...string[]];
1386
+ baseColumn: never;
1387
+ identity: undefined;
1388
+ generated: undefined;
1389
+ }, {}, {}>;
1390
+ checkedAt: import("drizzle-orm/pg-core").PgColumn<{
1391
+ name: "checkedAt";
1392
+ tableName: "sanoma_run_checks";
1393
+ dataType: "date";
1394
+ columnType: "PgTimestamp";
1395
+ data: Date;
1396
+ driverParam: string;
1397
+ notNull: true;
1398
+ hasDefault: true;
1399
+ isPrimaryKey: false;
1400
+ isAutoincrement: false;
1401
+ hasRuntimeDefault: false;
1402
+ enumValues: undefined;
1403
+ baseColumn: never;
1404
+ identity: undefined;
1405
+ generated: undefined;
1406
+ }, {}, {}>;
1407
+ };
1408
+ dialect: 'pg';
1409
+ }>;
@@ -48,7 +48,7 @@ export const wakeup = pgTable("sanoma_wakeup", {
48
48
  stoppedAt: when(),
49
49
  lastError: text(),
50
50
  }, (t) => [check("sanoma_wakeup_one_row", sql `${t.id} = 1`)]);
51
- /** The operator agent's chats (`chats.ts`): who each is for, its engine and its draft. */
51
+ /** The operator agent's chats (`chats.ts`): who each is for, its engine, its draft and the turn last begun (its run's id). */
52
52
  export const chats = pgTable("sanoma_chats", {
53
53
  id: text().primaryKey(),
54
54
  person: text().notNull(),
@@ -56,6 +56,7 @@ export const chats = pgTable("sanoma_chats", {
56
56
  draftId: text(),
57
57
  title: text().notNull(),
58
58
  createdAt: when().notNull().defaultNow(),
59
+ turn: text(),
59
60
  }, (t) => [index("sanoma_chats_person").on(t.person, t.createdAt)]);
60
61
  /** Each chat's messages, the AI SDK's UI messages as JSON, in `seq` order. */
61
62
  export const chatMessages = pgTable("sanoma_chat_messages", {
@@ -66,6 +67,19 @@ export const chatMessages = pgTable("sanoma_chat_messages", {
66
67
  seq: integer().notNull(),
67
68
  message: jsonb().$type().notNull(),
68
69
  }, (t) => [primaryKey({ columns: [t.chatId, t.id] })]);
70
+ /**
71
+ * The reply a chat turn streams, as the worker writes it (`Chats.append`): its UI message stream's
72
+ * chunks in `seq` order, then a row with none, its end. The app streams them to the browser; a
73
+ * chat's turn's rows go when its next turn begins.
74
+ */
75
+ export const chatChunks = pgTable("sanoma_chat_chunks", {
76
+ chatId: text()
77
+ .notNull()
78
+ .references(() => chats.id, { onDelete: "cascade" }),
79
+ runId: text().notNull(),
80
+ seq: integer().notNull(),
81
+ chunk: jsonb().$type(),
82
+ }, (t) => [primaryKey({ columns: [t.runId, t.seq] }), index("sanoma_chat_chunks_chat").on(t.chatId)]);
69
83
  /** The api tokens (`tokens.ts`): each one's SHA-256, never the token, whom it acts for, its groups, and when it was revoked. */
70
84
  export const apiTokens = pgTable("sanoma_api_tokens", {
71
85
  id: text().primaryKey(),
@@ -115,4 +129,21 @@ export const connectionSetups = pgTable("sanoma_connection_setups", {
115
129
  revision: text().notNull(),
116
130
  credentialVersion: text().notNull(),
117
131
  }, (t) => [primaryKey({ columns: [t.connectionId, t.revision] })]);
132
+ /**
133
+ * How far each app taken from a source is behind it, as the worker last checked (`writeAppsBehind`):
134
+ * one row per app folder, its count of commits or why it could not be told.
135
+ */
136
+ export const appBehind = pgTable("sanoma_app_behind", {
137
+ folder: text().primaryKey(),
138
+ behind: integer(),
139
+ error: text(),
140
+ checkedAt: when().notNull().defaultNow(),
141
+ }, (t) => [check("sanoma_app_behind_one_answer", sql `(${t.behind} IS NULL) <> (${t.error} IS NULL)`)]);
142
+ /** Each sandbox run's checks against its scenario, as the worker last ran them (`recordChecks` in sandbox.ts): one row per run. */
143
+ export const runChecks = pgTable("sanoma_run_checks", {
144
+ runId: text().primaryKey(),
145
+ checks: jsonb().$type(),
146
+ error: text(),
147
+ checkedAt: when().notNull().defaultNow(),
148
+ }, (t) => [check("sanoma_run_checks_one_answer", sql `(${t.checks} IS NULL) <> (${t.error} IS NULL)`)]);
118
149
  //# sourceMappingURL=company.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"company.js","sourceRoot":"","sources":["../../src/db/company.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"company.js","sourceRoot":"","sources":["../../src/db/company.ts"],"names":[],"mappings":"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"}
package/dist/db.d.ts CHANGED
@@ -2,6 +2,7 @@ import { DBOSClient } from "@dbos-inc/dbos-sdk";
2
2
  import { type NodePgClient, type NodePgQueryResultHKT } from "drizzle-orm/node-postgres";
3
3
  import { type PgDatabase } from "drizzle-orm/pg-core";
4
4
  import { Client, Pool } from "pg";
5
+ import type { RunChecks } from "./scenario.ts";
5
6
  /**
6
7
  * A database, or a transaction on one (`db.transaction`): what every store takes, so a store runs
7
8
  * inside a caller's transaction as it runs on its own. Made by `databaseOn`.
@@ -100,3 +101,17 @@ export declare function connectMaking(databaseUrl: string): Promise<Client>;
100
101
  * keeps nothing across requests.
101
102
  */
102
103
  export declare function spendInviteRequest(db: Db, nonce: string, expiresAt: Date): Promise<boolean>;
104
+ /** How far an app is behind its source (`Source.behind`), or why that could not be told. */
105
+ export type AppBehind = {
106
+ behind: number;
107
+ } | {
108
+ error: string;
109
+ };
110
+ /** Sets each app's row to what was told of it now, and drops the rows of apps no longer listed. */
111
+ export declare function writeAppsBehind(db: Db, told: ReadonlyMap<string, AppBehind>): Promise<void>;
112
+ /** The app `folder`'s row: how far it is behind its source, or why not; undefined when the worker has not told it. */
113
+ export declare function readAppBehind(db: Db, folder: string): Promise<AppBehind | undefined>;
114
+ /** Sets the run's checks (`RunChecks`), replacing what was there. */
115
+ export declare function writeRunChecks(db: Db, runId: string, checks: RunChecks): Promise<void>;
116
+ /** The run's checks as the worker last ran them; undefined when it has run none. */
117
+ export declare function readRunChecks(db: Db, runId: string): Promise<RunChecks | undefined>;
package/dist/db.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { DBOS, DBOSClient } from "@dbos-inc/dbos-sdk";
2
2
  import { setTimeout as delay } from "node:timers/promises";
3
- import { and, eq, inArray, lte, ne, sql } from "drizzle-orm";
3
+ import { and, eq, inArray, lte, ne, notInArray, sql } from "drizzle-orm";
4
4
  import { DrizzleQueryError } from "drizzle-orm/errors";
5
5
  import { drizzle } from "drizzle-orm/node-postgres";
6
6
  import { PgPreparedQuery } from "drizzle-orm/pg-core";
7
7
  import { Client, Pool } from "pg";
8
- import { inviteRequests } from "./db/company.js";
8
+ import { appBehind, inviteRequests, runChecks } from "./db/company.js";
9
9
  import { workflowStatus } from "./db/dbos.js";
10
10
  import { applyMigrations, COMPANY_MIGRATIONS, migrationsApplied } from "./db/migrate.js";
11
11
  import { warn } from "./log.js";
@@ -330,4 +330,44 @@ export async function spendInviteRequest(db, nonce, expiresAt) {
330
330
  .returning({ nonce: inviteRequests.nonce });
331
331
  return spent.length === 1;
332
332
  }
333
+ /** Sets each app's row to what was told of it now, and drops the rows of apps no longer listed. */
334
+ export async function writeAppsBehind(db, told) {
335
+ const folders = [...told.keys()];
336
+ await db.delete(appBehind).where(folders.length ? notInArray(appBehind.folder, folders) : undefined);
337
+ for (const [folder, answer] of told) {
338
+ const row = "behind" in answer ? { behind: answer.behind, error: null } : { behind: null, error: answer.error };
339
+ await db
340
+ .insert(appBehind)
341
+ .values({ folder, ...row })
342
+ .onConflictDoUpdate({ target: appBehind.folder, set: { ...row, checkedAt: sql `now()` } });
343
+ }
344
+ }
345
+ /** The app `folder`'s row: how far it is behind its source, or why not; undefined when the worker has not told it. */
346
+ export async function readAppBehind(db, folder) {
347
+ const [row] = await db
348
+ .select({ behind: appBehind.behind, error: appBehind.error })
349
+ .from(appBehind)
350
+ .where(eq(appBehind.folder, folder));
351
+ if (!row)
352
+ return undefined;
353
+ return row.error === null ? { behind: row.behind } : { error: row.error };
354
+ }
355
+ /** Sets the run's checks (`RunChecks`), replacing what was there. */
356
+ export async function writeRunChecks(db, runId, checks) {
357
+ const row = "checks" in checks ? { checks: checks.checks, error: null } : { checks: null, error: checks.error };
358
+ await db
359
+ .insert(runChecks)
360
+ .values({ runId, ...row })
361
+ .onConflictDoUpdate({ target: runChecks.runId, set: { ...row, checkedAt: sql `now()` } });
362
+ }
363
+ /** The run's checks as the worker last ran them; undefined when it has run none. */
364
+ export async function readRunChecks(db, runId) {
365
+ const [row] = await db
366
+ .select({ checks: runChecks.checks, error: runChecks.error })
367
+ .from(runChecks)
368
+ .where(eq(runChecks.runId, runId));
369
+ if (!row)
370
+ return undefined;
371
+ return row.error === null ? { checks: row.checks } : { error: row.error };
372
+ }
333
373
  //# sourceMappingURL=db.js.map
package/dist/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { FollowSteps } from "./follow-workflow.ts";
2
+ import { type RemoteHalf } from "./source.ts";
3
+ /** What the follow steps need of the resolved config: the remote halves and the declared hosts. */
4
+ export interface FollowStepsOptions {
5
+ remotes: ReadonlyMap<string, RemoteHalf>;
6
+ hosts(): Promise<string[]>;
7
+ }
8
+ export declare function followSteps({ remotes, hosts }: FollowStepsOptions): FollowSteps;
@@ -0,0 +1,113 @@
1
+ import { DBOS } from "@dbos-inc/dbos-sdk";
2
+ import { BASE, repositoryOf } from "./change.js";
3
+ import { errorCode, vendorCodeOf } from "./errors.js";
4
+ import { warn } from "./log.js";
5
+ import { runNow } from "./run.js";
6
+ import { APPLY_WORKFLOW, HOST_CHECK_AGENT, isEnded } from "./shared.js";
7
+ import { draftOf } from "./source.js";
8
+ // The follow workflow's steps (`follow-workflow.ts` is held to the workflow lint and imports no
9
+ // DBOS): where an event lands, `main` followed and its hosts applied, a draft's change told what
10
+ // its host says. Each reads its run from `currentRun`; the worker's own client tells and reads
11
+ // the changes, as `host-check`, and every write to the checkout is one of the worker's, one at a
12
+ // time (`WorkerState.serially`).
13
+ /** Whether two references name one repository: a host's names are compared without case. */
14
+ const sameRepo = (a, b) => a.owner.toLowerCase() === b.owner.toLowerCase() && a.name.toLowerCase() === b.name.toLowerCase();
15
+ export function followSteps({ remotes, hosts }) {
16
+ /** The worker's repository on its host (`repositoryOf`); undefined with no repository, remote or half for it. */
17
+ const repository = async (run) => {
18
+ const { source } = run.state;
19
+ if (!source)
20
+ return undefined;
21
+ return repositoryOf(remotes, run.state.secrets, source).catch((err) => {
22
+ if (["no_remote", "no_remote_half"].includes(vendorCodeOf(err) ?? ""))
23
+ return undefined;
24
+ throw err;
25
+ });
26
+ };
27
+ return {
28
+ where: (event) => DBOS.runStep(async () => {
29
+ const main = event.kind === "pushed" && event.branch === BASE;
30
+ const id = draftOf(event.branch);
31
+ if (!main && id === undefined)
32
+ return { ignored: `${event.branch} is neither ${BASE} nor a draft's branch` };
33
+ const run = runNow("A follow step");
34
+ if (!run.state.source)
35
+ return { ignored: "This worker has no repository" };
36
+ const found = await repository(run);
37
+ if (!found)
38
+ return { ignored: "This worker's repository has no remote on a host a connector reads" };
39
+ if (!sameRepo(found.repo, event.repo)) {
40
+ return { ignored: `The event is ${event.repo.owner}/${event.repo.name}'s, not this repository's` };
41
+ }
42
+ return event.kind === "pushed" && main ? { main: event.head } : { draft: id };
43
+ }, { name: "follow:where" }),
44
+ async main(head) {
45
+ const run = runNow("A follow step");
46
+ const deploy = `deploy:${head}`;
47
+ const declared = await DBOS.runStep(async () => {
48
+ const client = await run.state.client();
49
+ const [deployed, deploying] = await Promise.all([client.run(deploy), client.changeDeploying()]);
50
+ if (deployed || deploying)
51
+ return undefined;
52
+ // First, as a change's deploy does: the hosts, and what apply reads, are then main's.
53
+ const moved = await run.state.followMain();
54
+ if (!("revision" in moved)) {
55
+ // Nothing recorded as `deploy:<head>`: a later push deploys it.
56
+ throw new Error(`${BASE} was not deployed: the checkout did not follow it: ${"skipped" in moved ? moved.skipped : moved.error}`);
57
+ }
58
+ return run.state.workflows.has(APPLY_WORKFLOW) ? await hosts() : [];
59
+ }, { name: "follow:main" });
60
+ if (!declared)
61
+ return { ignored: `${deploy} has run, or a change is deploying ${BASE}` };
62
+ if (!declared.length)
63
+ return { followed: "main" };
64
+ // As the run's own actor, `host-check` (`SanomaClient.follow`).
65
+ await run.state.startRun(APPLY_WORKFLOW, deploy, { input: { only: declared }, startedBy: run.actor });
66
+ return { followed: "main", deploy };
67
+ },
68
+ draft: (event, id) => DBOS.runStep(async () => {
69
+ const run = runNow("A follow step");
70
+ const change = await (await run.state.client()).change(id);
71
+ if (!change || isEnded(change.status))
72
+ return { ignored: `The draft ${id} has no open change` };
73
+ const key = `${event.kind}:${event.branch}:`;
74
+ if (event.kind === "closed") {
75
+ // A pull request of an earlier change of the draft is not this one's.
76
+ if (event.number !== change.state.pullRequest?.number) {
77
+ return { ignored: `Pull request #${event.number} is not the open change's` };
78
+ }
79
+ return {
80
+ told: event.merged && event.sha !== undefined ? { kind: "merged", sha: event.sha } : { kind: "closed" },
81
+ key: `${key}${event.number}:${event.sha ?? "closed"}`,
82
+ };
83
+ }
84
+ if (change.state.head === event.head)
85
+ return { ignored: `The change is at ${event.head} already` };
86
+ const found = await repository(run);
87
+ if (!found?.source.follow)
88
+ return { ignored: "This repository cannot follow its remote" };
89
+ const { source, url, host } = found;
90
+ const fetched = await run.state.serially(async () => {
91
+ const local = await Promise.resolve(source.head(event.branch)).catch(() => undefined);
92
+ if (local === event.head)
93
+ return false;
94
+ const moved = await source.follow({ url, token: await host.token(), ref: event.branch });
95
+ if ("skipped" in moved)
96
+ warn(`${event.branch} did not take the host's commits: ${moved.skipped}`);
97
+ return !("skipped" in moved);
98
+ });
99
+ if (!fetched)
100
+ return { ignored: `${event.branch} holds ${event.head} already, or cannot take it` };
101
+ return { told: { kind: "commits" }, key: `${key}${event.head}` };
102
+ }, { name: "follow:draft" }),
103
+ tell: (id, told, key) => DBOS.runStep(async () => {
104
+ const client = await runNow("A follow step").state.client();
105
+ await client.changeEvent(id, told, { by: HOST_CHECK_AGENT, key }).catch((err) => {
106
+ // Ended, or gone, since it was read: nothing to tell.
107
+ if (!["run_ended", "run_not_found"].includes(errorCode(err) ?? ""))
108
+ throw err;
109
+ });
110
+ }, { name: "follow:tell" }),
111
+ };
112
+ }
113
+ //# sourceMappingURL=follow-steps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"follow-steps.js","sourceRoot":"","sources":["../src/follow-steps.ts"],"names":[],"mappings":"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"}