@mastra/factory 0.2.0-alpha.0 → 0.2.1-alpha.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 (51) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/capabilities/intake.d.ts +45 -0
  3. package/dist/capabilities/intake.d.ts.map +1 -1
  4. package/dist/factory.js +923 -552
  5. package/dist/factory.js.map +1 -1
  6. package/dist/index.js +923 -552
  7. package/dist/index.js.map +1 -1
  8. package/dist/integrations/github/integration.d.ts.map +1 -1
  9. package/dist/integrations/github/integration.js +127 -12
  10. package/dist/integrations/github/integration.js.map +1 -1
  11. package/dist/integrations/github/project-lock.d.ts +24 -2
  12. package/dist/integrations/github/project-lock.d.ts.map +1 -1
  13. package/dist/integrations/github/project-lock.js +43 -10
  14. package/dist/integrations/github/project-lock.js.map +1 -1
  15. package/dist/integrations/github/routes.js +42 -11
  16. package/dist/integrations/github/routes.js.map +1 -1
  17. package/dist/integrations/linear/agent-tools.js.map +1 -1
  18. package/dist/integrations/linear/integration.d.ts.map +1 -1
  19. package/dist/integrations/linear/integration.js +60 -1
  20. package/dist/integrations/linear/integration.js.map +1 -1
  21. package/dist/integrations/linear/routes.js.map +1 -1
  22. package/dist/integrations/platform/api-client.js +1 -1
  23. package/dist/integrations/platform/api-client.js.map +1 -1
  24. package/dist/integrations/platform/github/event-worker.d.ts.map +1 -1
  25. package/dist/integrations/platform/github/event-worker.js +7 -1
  26. package/dist/integrations/platform/github/event-worker.js.map +1 -1
  27. package/dist/integrations/platform/github/integration.d.ts.map +1 -1
  28. package/dist/integrations/platform/github/integration.js +106 -14
  29. package/dist/integrations/platform/github/integration.js.map +1 -1
  30. package/dist/integrations/platform/linear/integration.d.ts.map +1 -1
  31. package/dist/integrations/platform/linear/integration.js +92 -1
  32. package/dist/integrations/platform/linear/integration.js.map +1 -1
  33. package/dist/routes/fs.d.ts +16 -0
  34. package/dist/routes/fs.d.ts.map +1 -1
  35. package/dist/routes/fs.js +103 -3
  36. package/dist/routes/fs.js.map +1 -1
  37. package/dist/routes/oauth.js +564 -478
  38. package/dist/routes/oauth.js.map +1 -1
  39. package/dist/routes/projects.d.ts.map +1 -1
  40. package/dist/routes/projects.js +1 -0
  41. package/dist/routes/projects.js.map +1 -1
  42. package/dist/routes/surface.d.ts.map +1 -1
  43. package/dist/routes/surface.js +717 -526
  44. package/dist/routes/surface.js.map +1 -1
  45. package/dist/server-error.js +1 -1
  46. package/dist/server-error.js.map +1 -1
  47. package/dist/storage/domains/source-control/base.d.ts +0 -1
  48. package/dist/storage/domains/source-control/base.d.ts.map +1 -1
  49. package/dist/storage/domains/source-control/base.js +6 -7
  50. package/dist/storage/domains/source-control/base.js.map +1 -1
  51. package/package.json +6 -6
@@ -5,7 +5,7 @@ function handleServerError(err, c) {
5
5
  return c.json({ error: err.message }, err.status);
6
6
  }
7
7
  const detail = err instanceof Error ? err.stack ?? err.message : String(err);
8
- console.error(`[MastraCode Web] ${c.req.method} ${c.req.path} failed: ${detail}`);
8
+ console.error(`[Mastra Factory] ${c.req.method} ${c.req.path} failed: ${detail}`);
9
9
  return c.json(
10
10
  {
11
11
  error: "internal_error",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server-error.ts"],"sourcesContent":["/**\n * Server-wide error handler for the MastraCode web surface.\n *\n * Installed as `server.onError`, which the deployer applies to the top-level\n * Hono app AND the custom-route sub-app (`/web/*`, `/auth/*`) — without it,\n * unexpected route errors surface as an opaque `Internal Server Error` with no\n * server-side trace.\n */\n\nimport type { Context } from 'hono';\nimport { HTTPException } from 'hono/http-exception';\n\n/** Handle a route error: log full detail server-side, return structured JSON. */\nexport function handleServerError(err: Error, c: Context): Response {\n // Deliberate HTTP errors (auth middleware, body limits, handlers) keep their\n // status + message; they are expected flows, not server faults.\n if (err instanceof HTTPException) {\n return c.json({ error: err.message }, err.status);\n }\n\n const detail = err instanceof Error ? (err.stack ?? err.message) : String(err);\n console.error(`[MastraCode Web] ${c.req.method} ${c.req.path} failed: ${detail}`);\n\n return c.json(\n {\n error: 'internal_error',\n message: err instanceof Error ? err.message : String(err),\n },\n 500,\n );\n}\n"],"mappings":";AAUA,SAAS,qBAAqB;AAGvB,SAAS,kBAAkB,KAAY,GAAsB;AAGlE,MAAI,eAAe,eAAe;AAChC,WAAO,EAAE,KAAK,EAAE,OAAO,IAAI,QAAQ,GAAG,IAAI,MAAM;AAAA,EAClD;AAEA,QAAM,SAAS,eAAe,QAAS,IAAI,SAAS,IAAI,UAAW,OAAO,GAAG;AAC7E,UAAQ,MAAM,oBAAoB,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,IAAI,YAAY,MAAM,EAAE;AAEhF,SAAO,EAAE;AAAA,IACP;AAAA,MACE,OAAO;AAAA,MACP,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IAC1D;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/server-error.ts"],"sourcesContent":["/**\n * Server-wide error handler for the MastraCode web surface.\n *\n * Installed as `server.onError`, which the deployer applies to the top-level\n * Hono app AND the custom-route sub-app (`/web/*`, `/auth/*`) — without it,\n * unexpected route errors surface as an opaque `Internal Server Error` with no\n * server-side trace.\n */\n\nimport type { Context } from 'hono';\nimport { HTTPException } from 'hono/http-exception';\n\n/** Handle a route error: log full detail server-side, return structured JSON. */\nexport function handleServerError(err: Error, c: Context): Response {\n // Deliberate HTTP errors (auth middleware, body limits, handlers) keep their\n // status + message; they are expected flows, not server faults.\n if (err instanceof HTTPException) {\n return c.json({ error: err.message }, err.status);\n }\n\n const detail = err instanceof Error ? (err.stack ?? err.message) : String(err);\n console.error(`[Mastra Factory] ${c.req.method} ${c.req.path} failed: ${detail}`);\n\n return c.json(\n {\n error: 'internal_error',\n message: err instanceof Error ? err.message : String(err),\n },\n 500,\n );\n}\n"],"mappings":";AAUA,SAAS,qBAAqB;AAGvB,SAAS,kBAAkB,KAAY,GAAsB;AAGlE,MAAI,eAAe,eAAe;AAChC,WAAO,EAAE,KAAK,EAAE,OAAO,IAAI,QAAQ,GAAG,IAAI,MAAM;AAAA,EAClD;AAEA,QAAM,SAAS,eAAe,QAAS,IAAI,SAAS,IAAI,UAAW,OAAO,GAAG;AAC7E,UAAQ,MAAM,oBAAoB,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,IAAI,YAAY,MAAM,EAAE;AAEhF,SAAO,EAAE;AAAA,IACP;AAAA,MACE,OAAO;AAAA,MACP,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IAC1D;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -163,7 +163,6 @@ export interface SourceControlStorageHandle {
163
163
  }): Promise<SourceControlRepository | null>;
164
164
  findByExternalId(args: {
165
165
  orgId: string;
166
- installationId: string;
167
166
  externalId: string;
168
167
  }): Promise<SourceControlRepository | null>;
169
168
  findBySlug(args: {
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/source-control/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/source-control/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAwB,MAAM,sBAAsB,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,sBAAsB,CAAC;AAWhF,eAAO,MAAM,sBAAsB,EAAE,gBAAgB,EA4JpD,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpE,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,6BAA6B,CAAC;IAChD,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,oCAAoC;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;CAClD;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,6BAA6B,CAAC;IAChD,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,kCAAkC;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;CAClD;AAED,MAAM,WAAW,8BAA8B;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,yCAAyC;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,gCAAgC;IAC/C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE;QACtB,IAAI,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAC;QACpE,GAAG,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;QACpF,gBAAgB,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;QACzG,MAAM,CAAC,IAAI,EAAE,oCAAoC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACvF,MAAM,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/D,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE;QACrB,IAAI,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAC1F,GAAG,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;QAClF,gBAAgB,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;QACvG,UAAU,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;QACnH,MAAM,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,kCAAkC,CAAA;SAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;KAC9G,CAAC;IACF,QAAQ,CAAC,WAAW,EAAE;QACpB,IAAI,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,gBAAgB,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,8BAA8B,EAAE,CAAC,CAAC;QACnG,GAAG,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,8BAA8B,GAAG,IAAI,CAAC,CAAC;QACzF,MAAM,CAAC,IAAI,EAAE,yCAAyC,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;QACjG,MAAM,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/D,CAAC;IACF,QAAQ,CAAC,mBAAmB,EAAE;QAC5B,IAAI,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAClF,wBAAwB,CAAC,IAAI,EAAE;YAC7B,sBAAsB,EAAE,MAAM,CAAC;YAC/B,oBAAoB,EAAE,MAAM,CAAC;SAC9B,GAAG,OAAO,CAAC,+BAA+B,EAAE,CAAC,CAAC;QAC/C,GAAG,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,4BAA4B,CAAA;SAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;QACpH,MAAM,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/D,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE;QAClB,WAAW,CAAC,IAAI,EAAE;YAAE,iBAAiB,EAAE,iBAAiB,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC/G,OAAO,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC;QACxE,YAAY,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACrE,YAAY,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,gBAAgB,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE;QAClB,MAAM,CAAC,IAAI,EAAE,gCAAgC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,EAAE;YAAE,mBAAmB,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC9F,GAAG,CAAC,IAAI,EAAE;YAAE,mBAAmB,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;QAClH,UAAU,CAAC,IAAI,EAAE;YACf,mBAAmB,EAAE,MAAM,CAAC;YAC5B,MAAM,EAAE,MAAM,CAAC;YACf,YAAY,EAAE,MAAM,CAAC;SACtB,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,EAAE;YAAE,mBAAmB,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC9F,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE;QACjB,IAAI,CAAC,IAAI,EAAE;YAAE,mBAAmB,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC7F,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;QACxE,YAAY,CAAC,IAAI,EAAE;YACjB,mBAAmB,EAAE,MAAM,CAAC;YAC5B,MAAM,EAAE,MAAM,CAAC;YACf,MAAM,EAAE,MAAM,CAAC;SAChB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC9E,UAAU,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,cAAc,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAClG,gBAAgB,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACnC,CAAC;CACH;AAgLD,qBAAa,oBAAqB,SAAQ,oBAAoB;;IAKtD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAU1C,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,0BAA0B;CAqdlE"}
@@ -388,13 +388,12 @@ var SourceControlStorage = class extends FactoryStorageDomain {
388
388
  );
389
389
  },
390
390
  get: getRepository,
391
- findByExternalId: async ({ orgId, installationId, externalId }) => {
392
- await requireInstallation({ orgId, id: installationId });
393
- const row = await db().findOne(REPOSITORIES, {
394
- installation_id: installationId,
395
- external_id: externalId
396
- });
397
- return row ? toRepository(row) : null;
391
+ findByExternalId: async ({ orgId, externalId }) => {
392
+ const rows = await db().findMany(REPOSITORIES, { external_id: externalId });
393
+ for (const row of rows) {
394
+ if (await getInstallation({ orgId, id: row.installation_id })) return toRepository(row);
395
+ }
396
+ return null;
398
397
  },
399
398
  findBySlug: async ({ orgId, installationId, slug }) => {
400
399
  await requireInstallation({ orgId, id: installationId });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/storage/domains/source-control/base.ts"],"sourcesContent":["import { FactoryStorageDomain, UniqueViolationError } from '@mastra/core/storage';\nimport type { CollectionSchema, FactoryStorageOps } from '@mastra/core/storage';\n\nconst FACTORY_PROJECTS = 'factory_projects';\nconst INSTALLATIONS = 'source_control_installations';\nconst REPOSITORIES = 'source_control_repositories';\nconst CONNECTIONS = 'factory_project_source_control_connections';\nconst PROJECT_REPOSITORIES = 'factory_project_repositories';\nconst SANDBOXES = 'source_control_project_repository_sandboxes';\nconst WORKTREES = 'source_control_worktrees';\nconst SESSIONS = 'source_control_sessions';\n\nexport const SOURCE_CONTROL_SCHEMAS: CollectionSchema[] = [\n {\n name: INSTALLATIONS,\n columns: {\n id: { type: 'uuid-pk' },\n integration_id: { type: 'text' },\n org_id: { type: 'text' },\n connected_by_user_id: { type: 'text' },\n external_id: { type: 'text' },\n account_name: { type: 'text', nullable: true },\n account_type: { type: 'text', nullable: true },\n provider_metadata: { type: 'json' },\n created_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n {\n name: 'source_control_installations_integration_org_external_unique',\n columns: ['integration_id', 'org_id', 'external_id'],\n },\n ],\n },\n {\n name: REPOSITORIES,\n columns: {\n id: { type: 'uuid-pk' },\n installation_id: { type: 'text' },\n external_id: { type: 'text' },\n slug: { type: 'text' },\n default_branch: { type: 'text', default: 'main' },\n provider_metadata: { type: 'json' },\n created_at: { type: 'timestamp' },\n updated_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n {\n name: 'source_control_repositories_installation_external_unique',\n columns: ['installation_id', 'external_id'],\n },\n ],\n indexes: [\n {\n name: 'source_control_repositories_installation_slug_idx',\n columns: ['installation_id', 'slug'],\n },\n ],\n },\n {\n name: CONNECTIONS,\n columns: {\n id: { type: 'uuid-pk' },\n factory_project_id: { type: 'text' },\n integration_id: { type: 'text' },\n installation_id: { type: 'text' },\n created_by_user_id: { type: 'text' },\n created_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n {\n name: 'factory_project_source_control_connections_project_integration_installation_unique',\n columns: ['factory_project_id', 'integration_id', 'installation_id'],\n },\n ],\n indexes: [\n {\n name: 'factory_project_source_control_connections_project_idx',\n columns: ['factory_project_id'],\n },\n ],\n },\n {\n name: PROJECT_REPOSITORIES,\n columns: {\n id: { type: 'uuid-pk' },\n connection_id: { type: 'text' },\n repository_id: { type: 'text' },\n created_by_user_id: { type: 'text' },\n branch: { type: 'text', nullable: true },\n sandbox_provider: { type: 'text' },\n sandbox_workdir: { type: 'text' },\n setup_command: { type: 'text', nullable: true },\n created_at: { type: 'timestamp' },\n updated_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n {\n name: 'factory_project_repositories_connection_repository_unique',\n columns: ['connection_id', 'repository_id'],\n },\n ],\n indexes: [\n {\n name: 'factory_project_repositories_connection_idx',\n columns: ['connection_id'],\n },\n ],\n },\n {\n name: SANDBOXES,\n columns: {\n id: { type: 'uuid-pk' },\n project_repository_id: { type: 'text' },\n user_id: { type: 'text' },\n sandbox_id: { type: 'text', nullable: true },\n sandbox_workdir: { type: 'text' },\n materialized_at: { type: 'timestamp', nullable: true },\n created_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n {\n name: 'source_control_project_repository_sandboxes_link_user_unique',\n columns: ['project_repository_id', 'user_id'],\n },\n ],\n },\n {\n name: WORKTREES,\n columns: {\n id: { type: 'uuid-pk' },\n project_repository_id: { type: 'text' },\n user_id: { type: 'text' },\n branch: { type: 'text' },\n base_branch: { type: 'text' },\n worktree_path: { type: 'text' },\n created_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n {\n name: 'source_control_worktrees_project_repository_user_branch_unique',\n columns: ['project_repository_id', 'user_id', 'branch'],\n },\n ],\n },\n {\n name: SESSIONS,\n columns: {\n id: { type: 'uuid-pk' },\n session_id: { type: 'text' },\n project_repository_id: { type: 'text' },\n org_id: { type: 'text' },\n user_id: { type: 'text' },\n branch: { type: 'text' },\n base_branch: { type: 'text' },\n sandbox_id: { type: 'text', nullable: true },\n sandbox_workdir: { type: 'text', nullable: true },\n materialized_at: { type: 'timestamp', nullable: true },\n created_at: { type: 'timestamp' },\n updated_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n { name: 'source_control_sessions_session_id_unique', columns: ['session_id'] },\n {\n name: 'source_control_sessions_repository_user_branch_unique',\n columns: ['project_repository_id', 'user_id', 'branch'],\n },\n ],\n },\n];\n\nexport type SourceControlProviderMetadata = Record<string, unknown>;\n\nexport interface SourceControlInstallation {\n id: string;\n integrationId: string;\n orgId: string;\n connectedByUserId: string;\n externalId: string;\n accountName: string | null;\n accountType: string | null;\n providerMetadata: SourceControlProviderMetadata;\n createdAt: Date;\n}\n\nexport interface UpsertSourceControlInstallationInput {\n orgId: string;\n connectedByUserId: string;\n externalId: string;\n accountName?: string | null;\n accountType?: string | null;\n providerMetadata?: SourceControlProviderMetadata;\n}\n\nexport interface SourceControlRepository {\n id: string;\n installationId: string;\n externalId: string;\n slug: string;\n defaultBranch: string;\n providerMetadata: SourceControlProviderMetadata;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport interface UpsertSourceControlRepositoryInput {\n installationId: string;\n externalId: string;\n slug: string;\n defaultBranch: string;\n providerMetadata?: SourceControlProviderMetadata;\n}\n\nexport interface ProjectSourceControlConnection {\n id: string;\n factoryProjectId: string;\n integrationId: string;\n installationId: string;\n createdByUserId: string;\n createdAt: Date;\n}\n\nexport interface CreateProjectSourceControlConnectionInput {\n orgId: string;\n factoryProjectId: string;\n installationId: string;\n createdByUserId: string;\n}\n\nexport interface ProjectRepository {\n id: string;\n connectionId: string;\n repositoryId: string;\n createdByUserId: string;\n branch: string | null;\n sandboxProvider: string;\n sandboxWorkdir: string;\n setupCommand: string | null;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport interface ExternalRepositoryProjectTarget {\n orgId: string;\n factoryProjectId: string;\n projectRepository: ProjectRepository;\n}\n\nexport interface LinkProjectRepositoryInput {\n orgId: string;\n connectionId: string;\n repositoryId: string;\n createdByUserId: string;\n branch?: string | null;\n sandboxProvider: string;\n sandboxWorkdir: string;\n setupCommand?: string | null;\n}\n\nexport interface UpdateProjectRepositoryInput {\n branch?: string | null;\n sandboxProvider?: string;\n sandboxWorkdir?: string;\n setupCommand?: string | null;\n}\n\nexport interface ProjectRepositorySandbox {\n id: string;\n projectRepositoryId: string;\n userId: string;\n sandboxId: string | null;\n sandboxWorkdir: string;\n materializedAt: Date | null;\n createdAt: Date;\n}\n\nexport interface SourceControlWorktree {\n id: string;\n projectRepositoryId: string;\n userId: string;\n branch: string;\n baseBranch: string;\n worktreePath: string;\n createdAt: Date;\n}\n\nexport interface UpsertSourceControlWorktreeInput {\n projectRepositoryId: string;\n userId: string;\n branch: string;\n baseBranch: string;\n worktreePath: string;\n}\n\nexport interface SourceControlSession {\n id: string;\n sessionId: string;\n projectRepositoryId: string;\n orgId: string;\n userId: string;\n branch: string;\n baseBranch: string;\n sandboxId: string | null;\n sandboxWorkdir: string | null;\n materializedAt: Date | null;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport interface CreateSourceControlSessionInput {\n sessionId: string;\n projectRepositoryId: string;\n orgId: string;\n userId: string;\n branch: string;\n baseBranch: string;\n}\n\nexport interface SourceControlStorageHandle {\n readonly integrationId: string;\n readonly installations: {\n list(args: { orgId: string }): Promise<SourceControlInstallation[]>;\n get(args: { orgId: string; id: string }): Promise<SourceControlInstallation | null>;\n findByExternalId(args: { orgId: string; externalId: string }): Promise<SourceControlInstallation | null>;\n upsert(args: UpsertSourceControlInstallationInput): Promise<SourceControlInstallation>;\n delete(args: { orgId: string; id: string }): Promise<boolean>;\n };\n readonly repositories: {\n list(args: { orgId: string; installationId: string }): Promise<SourceControlRepository[]>;\n get(args: { orgId: string; id: string }): Promise<SourceControlRepository | null>;\n findByExternalId(args: {\n orgId: string;\n installationId: string;\n externalId: string;\n }): Promise<SourceControlRepository | null>;\n findBySlug(args: { orgId: string; installationId: string; slug: string }): Promise<SourceControlRepository | null>;\n upsert(args: { orgId: string; input: UpsertSourceControlRepositoryInput }): Promise<SourceControlRepository>;\n };\n readonly connections: {\n list(args: { orgId: string; factoryProjectId: string }): Promise<ProjectSourceControlConnection[]>;\n get(args: { orgId: string; id: string }): Promise<ProjectSourceControlConnection | null>;\n create(args: CreateProjectSourceControlConnectionInput): Promise<ProjectSourceControlConnection>;\n delete(args: { orgId: string; id: string }): Promise<boolean>;\n };\n readonly projectRepositories: {\n list(args: { orgId: string; connectionId: string }): Promise<ProjectRepository[]>;\n listByExternalRepository(args: {\n installationExternalId: string;\n repositoryExternalId: string;\n }): Promise<ExternalRepositoryProjectTarget[]>;\n get(args: { orgId: string; id: string }): Promise<ProjectRepository | null>;\n link(args: LinkProjectRepositoryInput): Promise<ProjectRepository>;\n update(args: { orgId: string; id: string; input: UpdateProjectRepositoryInput }): Promise<ProjectRepository | null>;\n unlink(args: { orgId: string; id: string }): Promise<boolean>;\n };\n readonly sandboxes: {\n getOrCreate(args: { projectRepository: ProjectRepository; userId: string }): Promise<ProjectRepositorySandbox>;\n getById(args: { id: string }): Promise<ProjectRepositorySandbox | null>;\n setSandboxId(args: { id: string; sandboxId: string }): Promise<void>;\n clearBinding(args: { id: string }): Promise<void>;\n markMaterialized(args: { id: string }): Promise<void>;\n };\n readonly worktrees: {\n upsert(args: UpsertSourceControlWorktreeInput): Promise<void>;\n list(args: { projectRepositoryId: string; userId: string }): Promise<SourceControlWorktree[]>;\n get(args: { projectRepositoryId: string; userId: string; branch: string }): Promise<SourceControlWorktree | null>;\n findByPath(args: {\n projectRepositoryId: string;\n userId: string;\n worktreePath: string;\n }): Promise<SourceControlWorktree | null>;\n delete(args: { projectRepositoryId: string; userId: string; branch: string }): Promise<void>;\n };\n readonly sessions: {\n list(args: { projectRepositoryId: string; userId: string }): Promise<SourceControlSession[]>;\n getBySessionId(sessionId: string): Promise<SourceControlSession | null>;\n getForBranch(args: {\n projectRepositoryId: string;\n userId: string;\n branch: string;\n }): Promise<SourceControlSession | null>;\n create(input: CreateSourceControlSessionInput): Promise<SourceControlSession>;\n setSandbox(args: { id: string; sandboxId: string | null; sandboxWorkdir: string }): Promise<void>;\n markMaterialized(args: { id: string }): Promise<void>;\n delete(id: string): Promise<void>;\n };\n}\n\ninterface InstallationDbRow extends Record<string, unknown> {\n id: string;\n integration_id: string;\n org_id: string;\n connected_by_user_id: string;\n external_id: string;\n account_name: string | null;\n account_type: string | null;\n provider_metadata: SourceControlProviderMetadata;\n created_at: Date;\n}\n\ninterface RepositoryDbRow extends Record<string, unknown> {\n id: string;\n installation_id: string;\n external_id: string;\n slug: string;\n default_branch: string;\n provider_metadata: SourceControlProviderMetadata;\n created_at: Date;\n updated_at: Date;\n}\n\ninterface ConnectionDbRow extends Record<string, unknown> {\n id: string;\n factory_project_id: string;\n integration_id: string;\n installation_id: string;\n created_by_user_id: string;\n created_at: Date;\n}\n\ninterface ProjectRepositoryDbRow extends Record<string, unknown> {\n id: string;\n connection_id: string;\n repository_id: string;\n created_by_user_id: string;\n branch: string | null;\n sandbox_provider: string;\n sandbox_workdir: string;\n setup_command: string | null;\n created_at: Date;\n updated_at: Date;\n}\n\ninterface SandboxDbRow extends Record<string, unknown> {\n id: string;\n project_repository_id: string;\n user_id: string;\n sandbox_id: string | null;\n sandbox_workdir: string;\n materialized_at: Date | null;\n created_at: Date;\n}\n\ninterface WorktreeDbRow extends Record<string, unknown> {\n id: string;\n project_repository_id: string;\n user_id: string;\n branch: string;\n base_branch: string;\n worktree_path: string;\n created_at: Date;\n}\n\ninterface SessionDbRow extends Record<string, unknown> {\n id: string;\n session_id: string;\n project_repository_id: string;\n org_id: string;\n user_id: string;\n branch: string;\n base_branch: string;\n sandbox_id: string | null;\n sandbox_workdir: string | null;\n materialized_at: Date | null;\n created_at: Date;\n updated_at: Date;\n}\n\nfunction toInstallation(row: InstallationDbRow): SourceControlInstallation {\n return {\n id: row.id,\n integrationId: row.integration_id,\n orgId: row.org_id,\n connectedByUserId: row.connected_by_user_id,\n externalId: row.external_id,\n accountName: row.account_name,\n accountType: row.account_type,\n providerMetadata: row.provider_metadata,\n createdAt: row.created_at,\n };\n}\n\nfunction toRepository(row: RepositoryDbRow): SourceControlRepository {\n return {\n id: row.id,\n installationId: row.installation_id,\n externalId: row.external_id,\n slug: row.slug,\n defaultBranch: row.default_branch,\n providerMetadata: row.provider_metadata,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n };\n}\n\nfunction toConnection(row: ConnectionDbRow): ProjectSourceControlConnection {\n return {\n id: row.id,\n factoryProjectId: row.factory_project_id,\n integrationId: row.integration_id,\n installationId: row.installation_id,\n createdByUserId: row.created_by_user_id,\n createdAt: row.created_at,\n };\n}\n\nfunction toProjectRepository(row: ProjectRepositoryDbRow): ProjectRepository {\n return {\n id: row.id,\n connectionId: row.connection_id,\n repositoryId: row.repository_id,\n createdByUserId: row.created_by_user_id,\n branch: row.branch,\n sandboxProvider: row.sandbox_provider,\n sandboxWorkdir: row.sandbox_workdir,\n setupCommand: row.setup_command,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n };\n}\n\nfunction toSandbox(row: SandboxDbRow): ProjectRepositorySandbox {\n return {\n id: row.id,\n projectRepositoryId: row.project_repository_id,\n userId: row.user_id,\n sandboxId: row.sandbox_id,\n sandboxWorkdir: row.sandbox_workdir,\n materializedAt: row.materialized_at,\n createdAt: row.created_at,\n };\n}\n\nfunction toWorktree(row: WorktreeDbRow): SourceControlWorktree {\n return {\n id: row.id,\n projectRepositoryId: row.project_repository_id,\n userId: row.user_id,\n branch: row.branch,\n baseBranch: row.base_branch,\n worktreePath: row.worktree_path,\n createdAt: row.created_at,\n };\n}\n\nfunction toSession(row: SessionDbRow): SourceControlSession {\n return {\n id: row.id,\n sessionId: row.session_id,\n projectRepositoryId: row.project_repository_id,\n orgId: row.org_id,\n userId: row.user_id,\n branch: row.branch,\n baseBranch: row.base_branch,\n sandboxId: row.sandbox_id,\n sandboxWorkdir: row.sandbox_workdir,\n materializedAt: row.materialized_at,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n };\n}\n\nexport class SourceControlStorage extends FactoryStorageDomain {\n constructor() {\n super('source-control');\n }\n\n async init(): Promise<void> {\n await this.ensureCollections(SOURCE_CONTROL_SCHEMAS);\n }\n\n async dangerouslyClearAll(): Promise<void> {\n await this.ops.deleteMany(SESSIONS, {});\n await this.ops.deleteMany(WORKTREES, {});\n await this.ops.deleteMany(SANDBOXES, {});\n await this.ops.deleteMany(PROJECT_REPOSITORIES, {});\n await this.ops.deleteMany(CONNECTIONS, {});\n await this.ops.deleteMany(REPOSITORIES, {});\n await this.ops.deleteMany(INSTALLATIONS, {});\n }\n\n forIntegration(integrationId: string): SourceControlStorageHandle {\n if (!integrationId.trim()) throw new Error('[SourceControlStorage] integrationId must not be empty.');\n const db = (): FactoryStorageOps => this.ops;\n\n const getInstallation = async (args: { orgId: string; id: string }): Promise<SourceControlInstallation | null> => {\n const row = await db().findOne<InstallationDbRow>(INSTALLATIONS, {\n id: args.id,\n integration_id: integrationId,\n org_id: args.orgId,\n });\n return row ? toInstallation(row) : null;\n };\n\n const requireInstallation = async (args: { orgId: string; id: string }): Promise<SourceControlInstallation> => {\n const installation = await getInstallation(args);\n if (!installation)\n throw new Error('Source-control installation not found for this organization and integration.');\n return installation;\n };\n\n const getRepository = async (args: { orgId: string; id: string }): Promise<SourceControlRepository | null> => {\n const row = await db().findOne<RepositoryDbRow>(REPOSITORIES, { id: args.id });\n if (!row || !(await getInstallation({ orgId: args.orgId, id: row.installation_id }))) return null;\n return toRepository(row);\n };\n\n const requireRepository = async (args: { orgId: string; id: string }): Promise<SourceControlRepository> => {\n const repository = await getRepository(args);\n if (!repository) throw new Error('Source-control repository not found for this organization and integration.');\n return repository;\n };\n\n const getConnection = async (args: {\n orgId: string;\n id: string;\n }): Promise<ProjectSourceControlConnection | null> => {\n const row = await db().findOne<ConnectionDbRow>(CONNECTIONS, { id: args.id, integration_id: integrationId });\n if (!row) return null;\n const project = await db().findOne<Record<string, unknown>>(FACTORY_PROJECTS, {\n id: row.factory_project_id,\n org_id: args.orgId,\n });\n if (!project || !(await getInstallation({ orgId: args.orgId, id: row.installation_id }))) return null;\n return toConnection(row);\n };\n\n const requireConnection = async (args: { orgId: string; id: string }): Promise<ProjectSourceControlConnection> => {\n const connection = await getConnection(args);\n if (!connection)\n throw new Error('Project source-control connection not found for this organization and integration.');\n return connection;\n };\n\n const getProjectRepository = async (args: { orgId: string; id: string }): Promise<ProjectRepository | null> => {\n const row = await db().findOne<ProjectRepositoryDbRow>(PROJECT_REPOSITORIES, { id: args.id });\n if (!row || !(await getConnection({ orgId: args.orgId, id: row.connection_id }))) return null;\n return toProjectRepository(row);\n };\n\n const getProjectRepositoryById = async (id: string): Promise<ProjectRepository | null> => {\n const row = await db().findOne<ProjectRepositoryDbRow>(PROJECT_REPOSITORIES, { id });\n if (!row) return null;\n const connection = await db().findOne<ConnectionDbRow>(CONNECTIONS, {\n id: row.connection_id,\n integration_id: integrationId,\n });\n return connection ? toProjectRepository(row) : null;\n };\n\n const requireProjectRepositoryById = async (id: string): Promise<ProjectRepository> => {\n const projectRepository = await getProjectRepositoryById(id);\n if (!projectRepository) throw new Error('Project repository not found for this integration.');\n return projectRepository;\n };\n\n const getSandbox = async (id: string): Promise<ProjectRepositorySandbox | null> => {\n const row = await db().findOne<SandboxDbRow>(SANDBOXES, { id });\n if (!row || !(await getProjectRepositoryById(row.project_repository_id))) return null;\n return toSandbox(row);\n };\n\n const requireSandbox = async (id: string): Promise<ProjectRepositorySandbox> => {\n const sandbox = await getSandbox(id);\n if (!sandbox) throw new Error('Project-repository sandbox not found for this integration.');\n return sandbox;\n };\n\n return {\n integrationId,\n installations: {\n list: async ({ orgId }) =>\n (\n await db().findMany<InstallationDbRow>(INSTALLATIONS, {\n integration_id: integrationId,\n org_id: orgId,\n })\n ).map(toInstallation),\n get: getInstallation,\n findByExternalId: async ({ orgId, externalId }) => {\n const row = await db().findOne<InstallationDbRow>(INSTALLATIONS, {\n integration_id: integrationId,\n org_id: orgId,\n external_id: externalId,\n });\n return row ? toInstallation(row) : null;\n },\n upsert: async input => {\n const row = await db().upsertOne<InstallationDbRow>(\n INSTALLATIONS,\n ['integration_id', 'org_id', 'external_id'],\n {\n integration_id: integrationId,\n org_id: input.orgId,\n connected_by_user_id: input.connectedByUserId,\n external_id: input.externalId,\n account_name: input.accountName ?? null,\n account_type: input.accountType ?? null,\n provider_metadata: input.providerMetadata ?? {},\n created_at: new Date(),\n },\n );\n return toInstallation(row);\n },\n delete: async ({ orgId, id }) => {\n const installation = await getInstallation({ orgId, id });\n if (!installation) return false;\n await db().deleteMany(INSTALLATIONS, { id, integration_id: integrationId, org_id: orgId });\n return true;\n },\n },\n repositories: {\n list: async ({ orgId, installationId }) => {\n await requireInstallation({ orgId, id: installationId });\n return (await db().findMany<RepositoryDbRow>(REPOSITORIES, { installation_id: installationId })).map(\n toRepository,\n );\n },\n get: getRepository,\n findByExternalId: async ({ orgId, installationId, externalId }) => {\n await requireInstallation({ orgId, id: installationId });\n const row = await db().findOne<RepositoryDbRow>(REPOSITORIES, {\n installation_id: installationId,\n external_id: externalId,\n });\n return row ? toRepository(row) : null;\n },\n findBySlug: async ({ orgId, installationId, slug }) => {\n await requireInstallation({ orgId, id: installationId });\n const row = await db().findOne<RepositoryDbRow>(REPOSITORIES, { installation_id: installationId, slug });\n return row ? toRepository(row) : null;\n },\n upsert: async ({ orgId, input }) => {\n await requireInstallation({ orgId, id: input.installationId });\n const now = new Date();\n const row = await db().upsertOne<RepositoryDbRow>(REPOSITORIES, ['installation_id', 'external_id'], {\n installation_id: input.installationId,\n external_id: input.externalId,\n slug: input.slug,\n default_branch: input.defaultBranch,\n provider_metadata: input.providerMetadata ?? {},\n created_at: now,\n updated_at: now,\n });\n return toRepository(row);\n },\n },\n connections: {\n list: async ({ orgId, factoryProjectId }) => {\n const project = await db().findOne<Record<string, unknown>>(FACTORY_PROJECTS, {\n id: factoryProjectId,\n org_id: orgId,\n });\n if (!project) return [];\n return (\n await db().findMany<ConnectionDbRow>(CONNECTIONS, {\n factory_project_id: factoryProjectId,\n integration_id: integrationId,\n })\n ).map(toConnection);\n },\n get: getConnection,\n create: async input => {\n const project = await db().findOne<Record<string, unknown>>(FACTORY_PROJECTS, {\n id: input.factoryProjectId,\n org_id: input.orgId,\n });\n if (!project) throw new Error('Factory project not found for this organization.');\n await requireInstallation({ orgId: input.orgId, id: input.installationId });\n try {\n const row = await db().insertOne<ConnectionDbRow>(CONNECTIONS, {\n factory_project_id: input.factoryProjectId,\n integration_id: integrationId,\n installation_id: input.installationId,\n created_by_user_id: input.createdByUserId,\n created_at: new Date(),\n });\n return toConnection(row);\n } catch (error) {\n if (!(error instanceof UniqueViolationError)) throw error;\n const row = await db().findOne<ConnectionDbRow>(CONNECTIONS, {\n factory_project_id: input.factoryProjectId,\n integration_id: integrationId,\n installation_id: input.installationId,\n });\n if (!row) throw error;\n return toConnection(row);\n }\n },\n delete: async ({ orgId, id }) => {\n const connection = await getConnection({ orgId, id });\n if (!connection) return false;\n const projectRepositories = await db().findMany<ProjectRepositoryDbRow>(PROJECT_REPOSITORIES, {\n connection_id: id,\n });\n for (const projectRepository of projectRepositories) {\n await db().deleteMany(SESSIONS, { project_repository_id: projectRepository.id });\n await db().deleteMany(WORKTREES, { project_repository_id: projectRepository.id });\n await db().deleteMany(SANDBOXES, { project_repository_id: projectRepository.id });\n }\n await db().deleteMany(PROJECT_REPOSITORIES, { connection_id: id });\n await db().deleteMany(CONNECTIONS, { id, integration_id: integrationId });\n return true;\n },\n },\n projectRepositories: {\n list: async ({ orgId, connectionId }) => {\n await requireConnection({ orgId, id: connectionId });\n return (\n await db().findMany<ProjectRepositoryDbRow>(PROJECT_REPOSITORIES, { connection_id: connectionId })\n ).map(toProjectRepository);\n },\n listByExternalRepository: async ({ installationExternalId, repositoryExternalId }) => {\n const targets: ExternalRepositoryProjectTarget[] = [];\n const installations = await db().findMany<InstallationDbRow>(INSTALLATIONS, {\n integration_id: integrationId,\n external_id: installationExternalId,\n });\n for (const installation of installations) {\n const repository = await db().findOne<RepositoryDbRow>(REPOSITORIES, {\n installation_id: installation.id,\n external_id: repositoryExternalId,\n });\n if (!repository) continue;\n const links = await db().findMany<ProjectRepositoryDbRow>(PROJECT_REPOSITORIES, {\n repository_id: repository.id,\n });\n for (const link of links) {\n const connection = await db().findOne<ConnectionDbRow>(CONNECTIONS, {\n id: link.connection_id,\n integration_id: integrationId,\n installation_id: installation.id,\n });\n if (!connection) continue;\n const project = await db().findOne<Record<string, unknown>>(FACTORY_PROJECTS, {\n id: connection.factory_project_id,\n org_id: installation.org_id,\n });\n if (!project) continue;\n targets.push({\n orgId: installation.org_id,\n factoryProjectId: connection.factory_project_id,\n projectRepository: toProjectRepository(link),\n });\n }\n }\n return targets;\n },\n get: getProjectRepository,\n link: async input => {\n const connection = await requireConnection({ orgId: input.orgId, id: input.connectionId });\n const repository = await requireRepository({ orgId: input.orgId, id: input.repositoryId });\n if (repository.installationId !== connection.installationId) {\n throw new Error('Repository does not belong to the connection installation.');\n }\n const now = new Date();\n const row = await db().upsertOne<ProjectRepositoryDbRow>(\n PROJECT_REPOSITORIES,\n ['connection_id', 'repository_id'],\n {\n connection_id: input.connectionId,\n repository_id: input.repositoryId,\n created_by_user_id: input.createdByUserId,\n branch: input.branch ?? null,\n sandbox_provider: input.sandboxProvider,\n sandbox_workdir: input.sandboxWorkdir,\n setup_command: input.setupCommand ?? null,\n created_at: now,\n updated_at: now,\n },\n );\n return toProjectRepository(row);\n },\n update: async ({ orgId, id, input }) => {\n const existing = await getProjectRepository({ orgId, id });\n if (!existing) return null;\n const patch: Record<string, unknown> = { updated_at: new Date() };\n if (input.branch !== undefined) patch.branch = input.branch;\n if (input.sandboxProvider !== undefined) patch.sandbox_provider = input.sandboxProvider;\n if (input.sandboxWorkdir !== undefined) patch.sandbox_workdir = input.sandboxWorkdir;\n if (input.setupCommand !== undefined) patch.setup_command = input.setupCommand;\n await db().updateMany(PROJECT_REPOSITORIES, { id }, patch);\n return getProjectRepository({ orgId, id });\n },\n unlink: async ({ orgId, id }) => {\n const existing = await getProjectRepository({ orgId, id });\n if (!existing) return false;\n await db().deleteMany(SESSIONS, { project_repository_id: id });\n await db().deleteMany(WORKTREES, { project_repository_id: id });\n await db().deleteMany(SANDBOXES, { project_repository_id: id });\n await db().deleteMany(PROJECT_REPOSITORIES, { id });\n return true;\n },\n },\n sandboxes: {\n getOrCreate: async ({ projectRepository, userId }) => {\n await requireProjectRepositoryById(projectRepository.id);\n const where = { project_repository_id: projectRepository.id, user_id: userId };\n const existing = await db().findOne<SandboxDbRow>(SANDBOXES, where);\n if (existing) return toSandbox(existing);\n try {\n const row = await db().insertOne<SandboxDbRow>(SANDBOXES, {\n ...where,\n sandbox_id: null,\n sandbox_workdir: projectRepository.sandboxWorkdir,\n materialized_at: null,\n created_at: new Date(),\n });\n return toSandbox(row);\n } catch (error) {\n if (!(error instanceof UniqueViolationError)) throw error;\n const row = await db().findOne<SandboxDbRow>(SANDBOXES, where);\n if (!row) throw error;\n return toSandbox(row);\n }\n },\n getById: ({ id }) => getSandbox(id),\n setSandboxId: async ({ id, sandboxId }) => {\n await requireSandbox(id);\n await db().updateMany(SANDBOXES, { id }, { sandbox_id: sandboxId });\n },\n clearBinding: async ({ id }) => {\n await requireSandbox(id);\n await db().updateMany(SANDBOXES, { id }, { sandbox_id: null, materialized_at: null });\n },\n markMaterialized: async ({ id }) => {\n await requireSandbox(id);\n await db().updateMany(SANDBOXES, { id }, { materialized_at: new Date() });\n },\n },\n worktrees: {\n upsert: async input => {\n await requireProjectRepositoryById(input.projectRepositoryId);\n await db().upsertOne<WorktreeDbRow>(WORKTREES, ['project_repository_id', 'user_id', 'branch'], {\n project_repository_id: input.projectRepositoryId,\n user_id: input.userId,\n branch: input.branch,\n base_branch: input.baseBranch,\n worktree_path: input.worktreePath,\n created_at: new Date(),\n });\n },\n list: async ({ projectRepositoryId, userId }) => {\n if (!(await getProjectRepositoryById(projectRepositoryId))) return [];\n const rows = await db().findMany<WorktreeDbRow>(WORKTREES, {\n project_repository_id: projectRepositoryId,\n user_id: userId,\n });\n return rows.map(toWorktree);\n },\n get: async ({ projectRepositoryId, userId, branch }) => {\n if (!(await getProjectRepositoryById(projectRepositoryId))) return null;\n const row = await db().findOne<WorktreeDbRow>(WORKTREES, {\n project_repository_id: projectRepositoryId,\n user_id: userId,\n branch,\n });\n return row ? toWorktree(row) : null;\n },\n findByPath: async ({ projectRepositoryId, userId, worktreePath }) => {\n if (!(await getProjectRepositoryById(projectRepositoryId))) return null;\n const row = await db().findOne<WorktreeDbRow>(WORKTREES, {\n project_repository_id: projectRepositoryId,\n user_id: userId,\n worktree_path: worktreePath,\n });\n return row ? toWorktree(row) : null;\n },\n delete: async ({ projectRepositoryId, userId, branch }) => {\n await requireProjectRepositoryById(projectRepositoryId);\n await db().deleteMany(WORKTREES, {\n project_repository_id: projectRepositoryId,\n user_id: userId,\n branch,\n });\n },\n },\n sessions: {\n list: async ({ projectRepositoryId, userId }) => {\n if (!(await getProjectRepositoryById(projectRepositoryId))) return [];\n return (\n await db().findMany<SessionDbRow>(SESSIONS, {\n project_repository_id: projectRepositoryId,\n user_id: userId,\n })\n ).map(toSession);\n },\n getBySessionId: async sessionId => {\n const row = await db().findOne<SessionDbRow>(SESSIONS, { session_id: sessionId });\n return row && (await getProjectRepositoryById(row.project_repository_id)) ? toSession(row) : null;\n },\n getForBranch: async ({ projectRepositoryId, userId, branch }) => {\n if (!(await getProjectRepositoryById(projectRepositoryId))) return null;\n const row = await db().findOne<SessionDbRow>(SESSIONS, {\n project_repository_id: projectRepositoryId,\n user_id: userId,\n branch,\n });\n return row ? toSession(row) : null;\n },\n create: async input => {\n await requireProjectRepositoryById(input.projectRepositoryId);\n const existing = await db().findOne<SessionDbRow>(SESSIONS, {\n project_repository_id: input.projectRepositoryId,\n user_id: input.userId,\n branch: input.branch,\n });\n if (existing) return toSession(existing);\n const now = new Date();\n try {\n const row = await db().insertOne<SessionDbRow>(SESSIONS, {\n session_id: input.sessionId,\n project_repository_id: input.projectRepositoryId,\n org_id: input.orgId,\n user_id: input.userId,\n branch: input.branch,\n base_branch: input.baseBranch,\n sandbox_id: null,\n sandbox_workdir: null,\n materialized_at: null,\n created_at: now,\n updated_at: now,\n });\n return toSession(row);\n } catch (error) {\n if (!(error instanceof UniqueViolationError)) throw error;\n const row = await db().findOne<SessionDbRow>(SESSIONS, {\n project_repository_id: input.projectRepositoryId,\n user_id: input.userId,\n branch: input.branch,\n });\n if (!row) throw error;\n return toSession(row);\n }\n },\n setSandbox: async ({ id, sandboxId, sandboxWorkdir }) => {\n await db().updateMany(\n SESSIONS,\n { id },\n { sandbox_id: sandboxId, sandbox_workdir: sandboxWorkdir, updated_at: new Date() },\n );\n },\n markMaterialized: async ({ id }) => {\n await db().updateMany(SESSIONS, { id }, { materialized_at: new Date(), updated_at: new Date() });\n },\n delete: async id => {\n await db().deleteMany(SESSIONS, { id });\n },\n },\n };\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/storage/domains/source-control/base.ts"],"sourcesContent":["import { FactoryStorageDomain, UniqueViolationError } from '@mastra/core/storage';\nimport type { CollectionSchema, FactoryStorageOps } from '@mastra/core/storage';\n\nconst FACTORY_PROJECTS = 'factory_projects';\nconst INSTALLATIONS = 'source_control_installations';\nconst REPOSITORIES = 'source_control_repositories';\nconst CONNECTIONS = 'factory_project_source_control_connections';\nconst PROJECT_REPOSITORIES = 'factory_project_repositories';\nconst SANDBOXES = 'source_control_project_repository_sandboxes';\nconst WORKTREES = 'source_control_worktrees';\nconst SESSIONS = 'source_control_sessions';\n\nexport const SOURCE_CONTROL_SCHEMAS: CollectionSchema[] = [\n {\n name: INSTALLATIONS,\n columns: {\n id: { type: 'uuid-pk' },\n integration_id: { type: 'text' },\n org_id: { type: 'text' },\n connected_by_user_id: { type: 'text' },\n external_id: { type: 'text' },\n account_name: { type: 'text', nullable: true },\n account_type: { type: 'text', nullable: true },\n provider_metadata: { type: 'json' },\n created_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n {\n name: 'source_control_installations_integration_org_external_unique',\n columns: ['integration_id', 'org_id', 'external_id'],\n },\n ],\n },\n {\n name: REPOSITORIES,\n columns: {\n id: { type: 'uuid-pk' },\n installation_id: { type: 'text' },\n external_id: { type: 'text' },\n slug: { type: 'text' },\n default_branch: { type: 'text', default: 'main' },\n provider_metadata: { type: 'json' },\n created_at: { type: 'timestamp' },\n updated_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n {\n name: 'source_control_repositories_installation_external_unique',\n columns: ['installation_id', 'external_id'],\n },\n ],\n indexes: [\n {\n name: 'source_control_repositories_installation_slug_idx',\n columns: ['installation_id', 'slug'],\n },\n ],\n },\n {\n name: CONNECTIONS,\n columns: {\n id: { type: 'uuid-pk' },\n factory_project_id: { type: 'text' },\n integration_id: { type: 'text' },\n installation_id: { type: 'text' },\n created_by_user_id: { type: 'text' },\n created_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n {\n name: 'factory_project_source_control_connections_project_integration_installation_unique',\n columns: ['factory_project_id', 'integration_id', 'installation_id'],\n },\n ],\n indexes: [\n {\n name: 'factory_project_source_control_connections_project_idx',\n columns: ['factory_project_id'],\n },\n ],\n },\n {\n name: PROJECT_REPOSITORIES,\n columns: {\n id: { type: 'uuid-pk' },\n connection_id: { type: 'text' },\n repository_id: { type: 'text' },\n created_by_user_id: { type: 'text' },\n branch: { type: 'text', nullable: true },\n sandbox_provider: { type: 'text' },\n sandbox_workdir: { type: 'text' },\n setup_command: { type: 'text', nullable: true },\n created_at: { type: 'timestamp' },\n updated_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n {\n name: 'factory_project_repositories_connection_repository_unique',\n columns: ['connection_id', 'repository_id'],\n },\n ],\n indexes: [\n {\n name: 'factory_project_repositories_connection_idx',\n columns: ['connection_id'],\n },\n ],\n },\n {\n name: SANDBOXES,\n columns: {\n id: { type: 'uuid-pk' },\n project_repository_id: { type: 'text' },\n user_id: { type: 'text' },\n sandbox_id: { type: 'text', nullable: true },\n sandbox_workdir: { type: 'text' },\n materialized_at: { type: 'timestamp', nullable: true },\n created_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n {\n name: 'source_control_project_repository_sandboxes_link_user_unique',\n columns: ['project_repository_id', 'user_id'],\n },\n ],\n },\n {\n name: WORKTREES,\n columns: {\n id: { type: 'uuid-pk' },\n project_repository_id: { type: 'text' },\n user_id: { type: 'text' },\n branch: { type: 'text' },\n base_branch: { type: 'text' },\n worktree_path: { type: 'text' },\n created_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n {\n name: 'source_control_worktrees_project_repository_user_branch_unique',\n columns: ['project_repository_id', 'user_id', 'branch'],\n },\n ],\n },\n {\n name: SESSIONS,\n columns: {\n id: { type: 'uuid-pk' },\n session_id: { type: 'text' },\n project_repository_id: { type: 'text' },\n org_id: { type: 'text' },\n user_id: { type: 'text' },\n branch: { type: 'text' },\n base_branch: { type: 'text' },\n sandbox_id: { type: 'text', nullable: true },\n sandbox_workdir: { type: 'text', nullable: true },\n materialized_at: { type: 'timestamp', nullable: true },\n created_at: { type: 'timestamp' },\n updated_at: { type: 'timestamp' },\n },\n uniqueIndexes: [\n { name: 'source_control_sessions_session_id_unique', columns: ['session_id'] },\n {\n name: 'source_control_sessions_repository_user_branch_unique',\n columns: ['project_repository_id', 'user_id', 'branch'],\n },\n ],\n },\n];\n\nexport type SourceControlProviderMetadata = Record<string, unknown>;\n\nexport interface SourceControlInstallation {\n id: string;\n integrationId: string;\n orgId: string;\n connectedByUserId: string;\n externalId: string;\n accountName: string | null;\n accountType: string | null;\n providerMetadata: SourceControlProviderMetadata;\n createdAt: Date;\n}\n\nexport interface UpsertSourceControlInstallationInput {\n orgId: string;\n connectedByUserId: string;\n externalId: string;\n accountName?: string | null;\n accountType?: string | null;\n providerMetadata?: SourceControlProviderMetadata;\n}\n\nexport interface SourceControlRepository {\n id: string;\n installationId: string;\n externalId: string;\n slug: string;\n defaultBranch: string;\n providerMetadata: SourceControlProviderMetadata;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport interface UpsertSourceControlRepositoryInput {\n installationId: string;\n externalId: string;\n slug: string;\n defaultBranch: string;\n providerMetadata?: SourceControlProviderMetadata;\n}\n\nexport interface ProjectSourceControlConnection {\n id: string;\n factoryProjectId: string;\n integrationId: string;\n installationId: string;\n createdByUserId: string;\n createdAt: Date;\n}\n\nexport interface CreateProjectSourceControlConnectionInput {\n orgId: string;\n factoryProjectId: string;\n installationId: string;\n createdByUserId: string;\n}\n\nexport interface ProjectRepository {\n id: string;\n connectionId: string;\n repositoryId: string;\n createdByUserId: string;\n branch: string | null;\n sandboxProvider: string;\n sandboxWorkdir: string;\n setupCommand: string | null;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport interface ExternalRepositoryProjectTarget {\n orgId: string;\n factoryProjectId: string;\n projectRepository: ProjectRepository;\n}\n\nexport interface LinkProjectRepositoryInput {\n orgId: string;\n connectionId: string;\n repositoryId: string;\n createdByUserId: string;\n branch?: string | null;\n sandboxProvider: string;\n sandboxWorkdir: string;\n setupCommand?: string | null;\n}\n\nexport interface UpdateProjectRepositoryInput {\n branch?: string | null;\n sandboxProvider?: string;\n sandboxWorkdir?: string;\n setupCommand?: string | null;\n}\n\nexport interface ProjectRepositorySandbox {\n id: string;\n projectRepositoryId: string;\n userId: string;\n sandboxId: string | null;\n sandboxWorkdir: string;\n materializedAt: Date | null;\n createdAt: Date;\n}\n\nexport interface SourceControlWorktree {\n id: string;\n projectRepositoryId: string;\n userId: string;\n branch: string;\n baseBranch: string;\n worktreePath: string;\n createdAt: Date;\n}\n\nexport interface UpsertSourceControlWorktreeInput {\n projectRepositoryId: string;\n userId: string;\n branch: string;\n baseBranch: string;\n worktreePath: string;\n}\n\nexport interface SourceControlSession {\n id: string;\n sessionId: string;\n projectRepositoryId: string;\n orgId: string;\n userId: string;\n branch: string;\n baseBranch: string;\n sandboxId: string | null;\n sandboxWorkdir: string | null;\n materializedAt: Date | null;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport interface CreateSourceControlSessionInput {\n sessionId: string;\n projectRepositoryId: string;\n orgId: string;\n userId: string;\n branch: string;\n baseBranch: string;\n}\n\nexport interface SourceControlStorageHandle {\n readonly integrationId: string;\n readonly installations: {\n list(args: { orgId: string }): Promise<SourceControlInstallation[]>;\n get(args: { orgId: string; id: string }): Promise<SourceControlInstallation | null>;\n findByExternalId(args: { orgId: string; externalId: string }): Promise<SourceControlInstallation | null>;\n upsert(args: UpsertSourceControlInstallationInput): Promise<SourceControlInstallation>;\n delete(args: { orgId: string; id: string }): Promise<boolean>;\n };\n readonly repositories: {\n list(args: { orgId: string; installationId: string }): Promise<SourceControlRepository[]>;\n get(args: { orgId: string; id: string }): Promise<SourceControlRepository | null>;\n findByExternalId(args: { orgId: string; externalId: string }): Promise<SourceControlRepository | null>;\n findBySlug(args: { orgId: string; installationId: string; slug: string }): Promise<SourceControlRepository | null>;\n upsert(args: { orgId: string; input: UpsertSourceControlRepositoryInput }): Promise<SourceControlRepository>;\n };\n readonly connections: {\n list(args: { orgId: string; factoryProjectId: string }): Promise<ProjectSourceControlConnection[]>;\n get(args: { orgId: string; id: string }): Promise<ProjectSourceControlConnection | null>;\n create(args: CreateProjectSourceControlConnectionInput): Promise<ProjectSourceControlConnection>;\n delete(args: { orgId: string; id: string }): Promise<boolean>;\n };\n readonly projectRepositories: {\n list(args: { orgId: string; connectionId: string }): Promise<ProjectRepository[]>;\n listByExternalRepository(args: {\n installationExternalId: string;\n repositoryExternalId: string;\n }): Promise<ExternalRepositoryProjectTarget[]>;\n get(args: { orgId: string; id: string }): Promise<ProjectRepository | null>;\n link(args: LinkProjectRepositoryInput): Promise<ProjectRepository>;\n update(args: { orgId: string; id: string; input: UpdateProjectRepositoryInput }): Promise<ProjectRepository | null>;\n unlink(args: { orgId: string; id: string }): Promise<boolean>;\n };\n readonly sandboxes: {\n getOrCreate(args: { projectRepository: ProjectRepository; userId: string }): Promise<ProjectRepositorySandbox>;\n getById(args: { id: string }): Promise<ProjectRepositorySandbox | null>;\n setSandboxId(args: { id: string; sandboxId: string }): Promise<void>;\n clearBinding(args: { id: string }): Promise<void>;\n markMaterialized(args: { id: string }): Promise<void>;\n };\n readonly worktrees: {\n upsert(args: UpsertSourceControlWorktreeInput): Promise<void>;\n list(args: { projectRepositoryId: string; userId: string }): Promise<SourceControlWorktree[]>;\n get(args: { projectRepositoryId: string; userId: string; branch: string }): Promise<SourceControlWorktree | null>;\n findByPath(args: {\n projectRepositoryId: string;\n userId: string;\n worktreePath: string;\n }): Promise<SourceControlWorktree | null>;\n delete(args: { projectRepositoryId: string; userId: string; branch: string }): Promise<void>;\n };\n readonly sessions: {\n list(args: { projectRepositoryId: string; userId: string }): Promise<SourceControlSession[]>;\n getBySessionId(sessionId: string): Promise<SourceControlSession | null>;\n getForBranch(args: {\n projectRepositoryId: string;\n userId: string;\n branch: string;\n }): Promise<SourceControlSession | null>;\n create(input: CreateSourceControlSessionInput): Promise<SourceControlSession>;\n setSandbox(args: { id: string; sandboxId: string | null; sandboxWorkdir: string }): Promise<void>;\n markMaterialized(args: { id: string }): Promise<void>;\n delete(id: string): Promise<void>;\n };\n}\n\ninterface InstallationDbRow extends Record<string, unknown> {\n id: string;\n integration_id: string;\n org_id: string;\n connected_by_user_id: string;\n external_id: string;\n account_name: string | null;\n account_type: string | null;\n provider_metadata: SourceControlProviderMetadata;\n created_at: Date;\n}\n\ninterface RepositoryDbRow extends Record<string, unknown> {\n id: string;\n installation_id: string;\n external_id: string;\n slug: string;\n default_branch: string;\n provider_metadata: SourceControlProviderMetadata;\n created_at: Date;\n updated_at: Date;\n}\n\ninterface ConnectionDbRow extends Record<string, unknown> {\n id: string;\n factory_project_id: string;\n integration_id: string;\n installation_id: string;\n created_by_user_id: string;\n created_at: Date;\n}\n\ninterface ProjectRepositoryDbRow extends Record<string, unknown> {\n id: string;\n connection_id: string;\n repository_id: string;\n created_by_user_id: string;\n branch: string | null;\n sandbox_provider: string;\n sandbox_workdir: string;\n setup_command: string | null;\n created_at: Date;\n updated_at: Date;\n}\n\ninterface SandboxDbRow extends Record<string, unknown> {\n id: string;\n project_repository_id: string;\n user_id: string;\n sandbox_id: string | null;\n sandbox_workdir: string;\n materialized_at: Date | null;\n created_at: Date;\n}\n\ninterface WorktreeDbRow extends Record<string, unknown> {\n id: string;\n project_repository_id: string;\n user_id: string;\n branch: string;\n base_branch: string;\n worktree_path: string;\n created_at: Date;\n}\n\ninterface SessionDbRow extends Record<string, unknown> {\n id: string;\n session_id: string;\n project_repository_id: string;\n org_id: string;\n user_id: string;\n branch: string;\n base_branch: string;\n sandbox_id: string | null;\n sandbox_workdir: string | null;\n materialized_at: Date | null;\n created_at: Date;\n updated_at: Date;\n}\n\nfunction toInstallation(row: InstallationDbRow): SourceControlInstallation {\n return {\n id: row.id,\n integrationId: row.integration_id,\n orgId: row.org_id,\n connectedByUserId: row.connected_by_user_id,\n externalId: row.external_id,\n accountName: row.account_name,\n accountType: row.account_type,\n providerMetadata: row.provider_metadata,\n createdAt: row.created_at,\n };\n}\n\nfunction toRepository(row: RepositoryDbRow): SourceControlRepository {\n return {\n id: row.id,\n installationId: row.installation_id,\n externalId: row.external_id,\n slug: row.slug,\n defaultBranch: row.default_branch,\n providerMetadata: row.provider_metadata,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n };\n}\n\nfunction toConnection(row: ConnectionDbRow): ProjectSourceControlConnection {\n return {\n id: row.id,\n factoryProjectId: row.factory_project_id,\n integrationId: row.integration_id,\n installationId: row.installation_id,\n createdByUserId: row.created_by_user_id,\n createdAt: row.created_at,\n };\n}\n\nfunction toProjectRepository(row: ProjectRepositoryDbRow): ProjectRepository {\n return {\n id: row.id,\n connectionId: row.connection_id,\n repositoryId: row.repository_id,\n createdByUserId: row.created_by_user_id,\n branch: row.branch,\n sandboxProvider: row.sandbox_provider,\n sandboxWorkdir: row.sandbox_workdir,\n setupCommand: row.setup_command,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n };\n}\n\nfunction toSandbox(row: SandboxDbRow): ProjectRepositorySandbox {\n return {\n id: row.id,\n projectRepositoryId: row.project_repository_id,\n userId: row.user_id,\n sandboxId: row.sandbox_id,\n sandboxWorkdir: row.sandbox_workdir,\n materializedAt: row.materialized_at,\n createdAt: row.created_at,\n };\n}\n\nfunction toWorktree(row: WorktreeDbRow): SourceControlWorktree {\n return {\n id: row.id,\n projectRepositoryId: row.project_repository_id,\n userId: row.user_id,\n branch: row.branch,\n baseBranch: row.base_branch,\n worktreePath: row.worktree_path,\n createdAt: row.created_at,\n };\n}\n\nfunction toSession(row: SessionDbRow): SourceControlSession {\n return {\n id: row.id,\n sessionId: row.session_id,\n projectRepositoryId: row.project_repository_id,\n orgId: row.org_id,\n userId: row.user_id,\n branch: row.branch,\n baseBranch: row.base_branch,\n sandboxId: row.sandbox_id,\n sandboxWorkdir: row.sandbox_workdir,\n materializedAt: row.materialized_at,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n };\n}\n\nexport class SourceControlStorage extends FactoryStorageDomain {\n constructor() {\n super('source-control');\n }\n\n async init(): Promise<void> {\n await this.ensureCollections(SOURCE_CONTROL_SCHEMAS);\n }\n\n async dangerouslyClearAll(): Promise<void> {\n await this.ops.deleteMany(SESSIONS, {});\n await this.ops.deleteMany(WORKTREES, {});\n await this.ops.deleteMany(SANDBOXES, {});\n await this.ops.deleteMany(PROJECT_REPOSITORIES, {});\n await this.ops.deleteMany(CONNECTIONS, {});\n await this.ops.deleteMany(REPOSITORIES, {});\n await this.ops.deleteMany(INSTALLATIONS, {});\n }\n\n forIntegration(integrationId: string): SourceControlStorageHandle {\n if (!integrationId.trim()) throw new Error('[SourceControlStorage] integrationId must not be empty.');\n const db = (): FactoryStorageOps => this.ops;\n\n const getInstallation = async (args: { orgId: string; id: string }): Promise<SourceControlInstallation | null> => {\n const row = await db().findOne<InstallationDbRow>(INSTALLATIONS, {\n id: args.id,\n integration_id: integrationId,\n org_id: args.orgId,\n });\n return row ? toInstallation(row) : null;\n };\n\n const requireInstallation = async (args: { orgId: string; id: string }): Promise<SourceControlInstallation> => {\n const installation = await getInstallation(args);\n if (!installation)\n throw new Error('Source-control installation not found for this organization and integration.');\n return installation;\n };\n\n const getRepository = async (args: { orgId: string; id: string }): Promise<SourceControlRepository | null> => {\n const row = await db().findOne<RepositoryDbRow>(REPOSITORIES, { id: args.id });\n if (!row || !(await getInstallation({ orgId: args.orgId, id: row.installation_id }))) return null;\n return toRepository(row);\n };\n\n const requireRepository = async (args: { orgId: string; id: string }): Promise<SourceControlRepository> => {\n const repository = await getRepository(args);\n if (!repository) throw new Error('Source-control repository not found for this organization and integration.');\n return repository;\n };\n\n const getConnection = async (args: {\n orgId: string;\n id: string;\n }): Promise<ProjectSourceControlConnection | null> => {\n const row = await db().findOne<ConnectionDbRow>(CONNECTIONS, { id: args.id, integration_id: integrationId });\n if (!row) return null;\n const project = await db().findOne<Record<string, unknown>>(FACTORY_PROJECTS, {\n id: row.factory_project_id,\n org_id: args.orgId,\n });\n if (!project || !(await getInstallation({ orgId: args.orgId, id: row.installation_id }))) return null;\n return toConnection(row);\n };\n\n const requireConnection = async (args: { orgId: string; id: string }): Promise<ProjectSourceControlConnection> => {\n const connection = await getConnection(args);\n if (!connection)\n throw new Error('Project source-control connection not found for this organization and integration.');\n return connection;\n };\n\n const getProjectRepository = async (args: { orgId: string; id: string }): Promise<ProjectRepository | null> => {\n const row = await db().findOne<ProjectRepositoryDbRow>(PROJECT_REPOSITORIES, { id: args.id });\n if (!row || !(await getConnection({ orgId: args.orgId, id: row.connection_id }))) return null;\n return toProjectRepository(row);\n };\n\n const getProjectRepositoryById = async (id: string): Promise<ProjectRepository | null> => {\n const row = await db().findOne<ProjectRepositoryDbRow>(PROJECT_REPOSITORIES, { id });\n if (!row) return null;\n const connection = await db().findOne<ConnectionDbRow>(CONNECTIONS, {\n id: row.connection_id,\n integration_id: integrationId,\n });\n return connection ? toProjectRepository(row) : null;\n };\n\n const requireProjectRepositoryById = async (id: string): Promise<ProjectRepository> => {\n const projectRepository = await getProjectRepositoryById(id);\n if (!projectRepository) throw new Error('Project repository not found for this integration.');\n return projectRepository;\n };\n\n const getSandbox = async (id: string): Promise<ProjectRepositorySandbox | null> => {\n const row = await db().findOne<SandboxDbRow>(SANDBOXES, { id });\n if (!row || !(await getProjectRepositoryById(row.project_repository_id))) return null;\n return toSandbox(row);\n };\n\n const requireSandbox = async (id: string): Promise<ProjectRepositorySandbox> => {\n const sandbox = await getSandbox(id);\n if (!sandbox) throw new Error('Project-repository sandbox not found for this integration.');\n return sandbox;\n };\n\n return {\n integrationId,\n installations: {\n list: async ({ orgId }) =>\n (\n await db().findMany<InstallationDbRow>(INSTALLATIONS, {\n integration_id: integrationId,\n org_id: orgId,\n })\n ).map(toInstallation),\n get: getInstallation,\n findByExternalId: async ({ orgId, externalId }) => {\n const row = await db().findOne<InstallationDbRow>(INSTALLATIONS, {\n integration_id: integrationId,\n org_id: orgId,\n external_id: externalId,\n });\n return row ? toInstallation(row) : null;\n },\n upsert: async input => {\n const row = await db().upsertOne<InstallationDbRow>(\n INSTALLATIONS,\n ['integration_id', 'org_id', 'external_id'],\n {\n integration_id: integrationId,\n org_id: input.orgId,\n connected_by_user_id: input.connectedByUserId,\n external_id: input.externalId,\n account_name: input.accountName ?? null,\n account_type: input.accountType ?? null,\n provider_metadata: input.providerMetadata ?? {},\n created_at: new Date(),\n },\n );\n return toInstallation(row);\n },\n delete: async ({ orgId, id }) => {\n const installation = await getInstallation({ orgId, id });\n if (!installation) return false;\n await db().deleteMany(INSTALLATIONS, { id, integration_id: integrationId, org_id: orgId });\n return true;\n },\n },\n repositories: {\n list: async ({ orgId, installationId }) => {\n await requireInstallation({ orgId, id: installationId });\n return (await db().findMany<RepositoryDbRow>(REPOSITORIES, { installation_id: installationId })).map(\n toRepository,\n );\n },\n get: getRepository,\n findByExternalId: async ({ orgId, externalId }) => {\n const rows = await db().findMany<RepositoryDbRow>(REPOSITORIES, { external_id: externalId });\n for (const row of rows) {\n if (await getInstallation({ orgId, id: row.installation_id })) return toRepository(row);\n }\n return null;\n },\n findBySlug: async ({ orgId, installationId, slug }) => {\n await requireInstallation({ orgId, id: installationId });\n const row = await db().findOne<RepositoryDbRow>(REPOSITORIES, { installation_id: installationId, slug });\n return row ? toRepository(row) : null;\n },\n upsert: async ({ orgId, input }) => {\n await requireInstallation({ orgId, id: input.installationId });\n const now = new Date();\n const row = await db().upsertOne<RepositoryDbRow>(REPOSITORIES, ['installation_id', 'external_id'], {\n installation_id: input.installationId,\n external_id: input.externalId,\n slug: input.slug,\n default_branch: input.defaultBranch,\n provider_metadata: input.providerMetadata ?? {},\n created_at: now,\n updated_at: now,\n });\n return toRepository(row);\n },\n },\n connections: {\n list: async ({ orgId, factoryProjectId }) => {\n const project = await db().findOne<Record<string, unknown>>(FACTORY_PROJECTS, {\n id: factoryProjectId,\n org_id: orgId,\n });\n if (!project) return [];\n return (\n await db().findMany<ConnectionDbRow>(CONNECTIONS, {\n factory_project_id: factoryProjectId,\n integration_id: integrationId,\n })\n ).map(toConnection);\n },\n get: getConnection,\n create: async input => {\n const project = await db().findOne<Record<string, unknown>>(FACTORY_PROJECTS, {\n id: input.factoryProjectId,\n org_id: input.orgId,\n });\n if (!project) throw new Error('Factory project not found for this organization.');\n await requireInstallation({ orgId: input.orgId, id: input.installationId });\n try {\n const row = await db().insertOne<ConnectionDbRow>(CONNECTIONS, {\n factory_project_id: input.factoryProjectId,\n integration_id: integrationId,\n installation_id: input.installationId,\n created_by_user_id: input.createdByUserId,\n created_at: new Date(),\n });\n return toConnection(row);\n } catch (error) {\n if (!(error instanceof UniqueViolationError)) throw error;\n const row = await db().findOne<ConnectionDbRow>(CONNECTIONS, {\n factory_project_id: input.factoryProjectId,\n integration_id: integrationId,\n installation_id: input.installationId,\n });\n if (!row) throw error;\n return toConnection(row);\n }\n },\n delete: async ({ orgId, id }) => {\n const connection = await getConnection({ orgId, id });\n if (!connection) return false;\n const projectRepositories = await db().findMany<ProjectRepositoryDbRow>(PROJECT_REPOSITORIES, {\n connection_id: id,\n });\n for (const projectRepository of projectRepositories) {\n await db().deleteMany(SESSIONS, { project_repository_id: projectRepository.id });\n await db().deleteMany(WORKTREES, { project_repository_id: projectRepository.id });\n await db().deleteMany(SANDBOXES, { project_repository_id: projectRepository.id });\n }\n await db().deleteMany(PROJECT_REPOSITORIES, { connection_id: id });\n await db().deleteMany(CONNECTIONS, { id, integration_id: integrationId });\n return true;\n },\n },\n projectRepositories: {\n list: async ({ orgId, connectionId }) => {\n await requireConnection({ orgId, id: connectionId });\n return (\n await db().findMany<ProjectRepositoryDbRow>(PROJECT_REPOSITORIES, { connection_id: connectionId })\n ).map(toProjectRepository);\n },\n listByExternalRepository: async ({ installationExternalId, repositoryExternalId }) => {\n const targets: ExternalRepositoryProjectTarget[] = [];\n const installations = await db().findMany<InstallationDbRow>(INSTALLATIONS, {\n integration_id: integrationId,\n external_id: installationExternalId,\n });\n for (const installation of installations) {\n const repository = await db().findOne<RepositoryDbRow>(REPOSITORIES, {\n installation_id: installation.id,\n external_id: repositoryExternalId,\n });\n if (!repository) continue;\n const links = await db().findMany<ProjectRepositoryDbRow>(PROJECT_REPOSITORIES, {\n repository_id: repository.id,\n });\n for (const link of links) {\n const connection = await db().findOne<ConnectionDbRow>(CONNECTIONS, {\n id: link.connection_id,\n integration_id: integrationId,\n installation_id: installation.id,\n });\n if (!connection) continue;\n const project = await db().findOne<Record<string, unknown>>(FACTORY_PROJECTS, {\n id: connection.factory_project_id,\n org_id: installation.org_id,\n });\n if (!project) continue;\n targets.push({\n orgId: installation.org_id,\n factoryProjectId: connection.factory_project_id,\n projectRepository: toProjectRepository(link),\n });\n }\n }\n return targets;\n },\n get: getProjectRepository,\n link: async input => {\n const connection = await requireConnection({ orgId: input.orgId, id: input.connectionId });\n const repository = await requireRepository({ orgId: input.orgId, id: input.repositoryId });\n if (repository.installationId !== connection.installationId) {\n throw new Error('Repository does not belong to the connection installation.');\n }\n const now = new Date();\n const row = await db().upsertOne<ProjectRepositoryDbRow>(\n PROJECT_REPOSITORIES,\n ['connection_id', 'repository_id'],\n {\n connection_id: input.connectionId,\n repository_id: input.repositoryId,\n created_by_user_id: input.createdByUserId,\n branch: input.branch ?? null,\n sandbox_provider: input.sandboxProvider,\n sandbox_workdir: input.sandboxWorkdir,\n setup_command: input.setupCommand ?? null,\n created_at: now,\n updated_at: now,\n },\n );\n return toProjectRepository(row);\n },\n update: async ({ orgId, id, input }) => {\n const existing = await getProjectRepository({ orgId, id });\n if (!existing) return null;\n const patch: Record<string, unknown> = { updated_at: new Date() };\n if (input.branch !== undefined) patch.branch = input.branch;\n if (input.sandboxProvider !== undefined) patch.sandbox_provider = input.sandboxProvider;\n if (input.sandboxWorkdir !== undefined) patch.sandbox_workdir = input.sandboxWorkdir;\n if (input.setupCommand !== undefined) patch.setup_command = input.setupCommand;\n await db().updateMany(PROJECT_REPOSITORIES, { id }, patch);\n return getProjectRepository({ orgId, id });\n },\n unlink: async ({ orgId, id }) => {\n const existing = await getProjectRepository({ orgId, id });\n if (!existing) return false;\n await db().deleteMany(SESSIONS, { project_repository_id: id });\n await db().deleteMany(WORKTREES, { project_repository_id: id });\n await db().deleteMany(SANDBOXES, { project_repository_id: id });\n await db().deleteMany(PROJECT_REPOSITORIES, { id });\n return true;\n },\n },\n sandboxes: {\n getOrCreate: async ({ projectRepository, userId }) => {\n await requireProjectRepositoryById(projectRepository.id);\n const where = { project_repository_id: projectRepository.id, user_id: userId };\n const existing = await db().findOne<SandboxDbRow>(SANDBOXES, where);\n if (existing) return toSandbox(existing);\n try {\n const row = await db().insertOne<SandboxDbRow>(SANDBOXES, {\n ...where,\n sandbox_id: null,\n sandbox_workdir: projectRepository.sandboxWorkdir,\n materialized_at: null,\n created_at: new Date(),\n });\n return toSandbox(row);\n } catch (error) {\n if (!(error instanceof UniqueViolationError)) throw error;\n const row = await db().findOne<SandboxDbRow>(SANDBOXES, where);\n if (!row) throw error;\n return toSandbox(row);\n }\n },\n getById: ({ id }) => getSandbox(id),\n setSandboxId: async ({ id, sandboxId }) => {\n await requireSandbox(id);\n await db().updateMany(SANDBOXES, { id }, { sandbox_id: sandboxId });\n },\n clearBinding: async ({ id }) => {\n await requireSandbox(id);\n await db().updateMany(SANDBOXES, { id }, { sandbox_id: null, materialized_at: null });\n },\n markMaterialized: async ({ id }) => {\n await requireSandbox(id);\n await db().updateMany(SANDBOXES, { id }, { materialized_at: new Date() });\n },\n },\n worktrees: {\n upsert: async input => {\n await requireProjectRepositoryById(input.projectRepositoryId);\n await db().upsertOne<WorktreeDbRow>(WORKTREES, ['project_repository_id', 'user_id', 'branch'], {\n project_repository_id: input.projectRepositoryId,\n user_id: input.userId,\n branch: input.branch,\n base_branch: input.baseBranch,\n worktree_path: input.worktreePath,\n created_at: new Date(),\n });\n },\n list: async ({ projectRepositoryId, userId }) => {\n if (!(await getProjectRepositoryById(projectRepositoryId))) return [];\n const rows = await db().findMany<WorktreeDbRow>(WORKTREES, {\n project_repository_id: projectRepositoryId,\n user_id: userId,\n });\n return rows.map(toWorktree);\n },\n get: async ({ projectRepositoryId, userId, branch }) => {\n if (!(await getProjectRepositoryById(projectRepositoryId))) return null;\n const row = await db().findOne<WorktreeDbRow>(WORKTREES, {\n project_repository_id: projectRepositoryId,\n user_id: userId,\n branch,\n });\n return row ? toWorktree(row) : null;\n },\n findByPath: async ({ projectRepositoryId, userId, worktreePath }) => {\n if (!(await getProjectRepositoryById(projectRepositoryId))) return null;\n const row = await db().findOne<WorktreeDbRow>(WORKTREES, {\n project_repository_id: projectRepositoryId,\n user_id: userId,\n worktree_path: worktreePath,\n });\n return row ? toWorktree(row) : null;\n },\n delete: async ({ projectRepositoryId, userId, branch }) => {\n await requireProjectRepositoryById(projectRepositoryId);\n await db().deleteMany(WORKTREES, {\n project_repository_id: projectRepositoryId,\n user_id: userId,\n branch,\n });\n },\n },\n sessions: {\n list: async ({ projectRepositoryId, userId }) => {\n if (!(await getProjectRepositoryById(projectRepositoryId))) return [];\n return (\n await db().findMany<SessionDbRow>(SESSIONS, {\n project_repository_id: projectRepositoryId,\n user_id: userId,\n })\n ).map(toSession);\n },\n getBySessionId: async sessionId => {\n const row = await db().findOne<SessionDbRow>(SESSIONS, { session_id: sessionId });\n return row && (await getProjectRepositoryById(row.project_repository_id)) ? toSession(row) : null;\n },\n getForBranch: async ({ projectRepositoryId, userId, branch }) => {\n if (!(await getProjectRepositoryById(projectRepositoryId))) return null;\n const row = await db().findOne<SessionDbRow>(SESSIONS, {\n project_repository_id: projectRepositoryId,\n user_id: userId,\n branch,\n });\n return row ? toSession(row) : null;\n },\n create: async input => {\n await requireProjectRepositoryById(input.projectRepositoryId);\n const existing = await db().findOne<SessionDbRow>(SESSIONS, {\n project_repository_id: input.projectRepositoryId,\n user_id: input.userId,\n branch: input.branch,\n });\n if (existing) return toSession(existing);\n const now = new Date();\n try {\n const row = await db().insertOne<SessionDbRow>(SESSIONS, {\n session_id: input.sessionId,\n project_repository_id: input.projectRepositoryId,\n org_id: input.orgId,\n user_id: input.userId,\n branch: input.branch,\n base_branch: input.baseBranch,\n sandbox_id: null,\n sandbox_workdir: null,\n materialized_at: null,\n created_at: now,\n updated_at: now,\n });\n return toSession(row);\n } catch (error) {\n if (!(error instanceof UniqueViolationError)) throw error;\n const row = await db().findOne<SessionDbRow>(SESSIONS, {\n project_repository_id: input.projectRepositoryId,\n user_id: input.userId,\n branch: input.branch,\n });\n if (!row) throw error;\n return toSession(row);\n }\n },\n setSandbox: async ({ id, sandboxId, sandboxWorkdir }) => {\n await db().updateMany(\n SESSIONS,\n { id },\n { sandbox_id: sandboxId, sandbox_workdir: sandboxWorkdir, updated_at: new Date() },\n );\n },\n markMaterialized: async ({ id }) => {\n await db().updateMany(SESSIONS, { id }, { materialized_at: new Date(), updated_at: new Date() });\n },\n delete: async id => {\n await db().deleteMany(SESSIONS, { id });\n },\n },\n };\n }\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/factory",
3
- "version": "0.2.0-alpha.0",
3
+ "version": "0.2.1-alpha.0",
4
4
  "description": "Mastra Software Factory module: the server core behind the Mastra Software Factory — storage domains, integrations, and surfaces for agent-powered software delivery",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -52,8 +52,8 @@
52
52
  "zod": "^4.3.6",
53
53
  "@mastra/auth-studio": "1.3.2",
54
54
  "@mastra/auth-workos": "1.6.4",
55
- "@mastra/code-sdk": "1.0.1-alpha.0",
56
- "@mastra/core": "1.52.1-alpha.0"
55
+ "@mastra/code-sdk": "1.0.2-alpha.0",
56
+ "@mastra/core": "1.52.2-alpha.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@types/node": "22.20.1",
@@ -62,10 +62,10 @@
62
62
  "typescript": "^6.0.3",
63
63
  "typescript-eslint": "^8.57.0",
64
64
  "vitest": "4.1.10",
65
- "@mastra/libsql": "1.17.0",
66
- "@internal/lint": "0.0.115",
65
+ "@internal/lint": "0.0.116",
66
+ "@mastra/libsql": "1.17.1-alpha.0",
67
67
  "@mastra/pg": "1.17.0",
68
- "@internal/types-builder": "0.0.90"
68
+ "@internal/types-builder": "0.0.91"
69
69
  },
70
70
  "engines": {
71
71
  "node": ">=22.19.0"