@mastra/factory 0.10.0-alpha.1 → 0.10.0-alpha.13
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.
- package/CHANGELOG.md +212 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +2 -1
- package/dist/auth.js.map +1 -1
- package/dist/factory.d.ts +8 -0
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +25 -8
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/integrations/base.d.ts +3 -1
- package/dist/integrations/base.d.ts.map +1 -1
- package/dist/integrations/github/integration.d.ts +14 -0
- package/dist/integrations/github/integration.d.ts.map +1 -1
- package/dist/integrations/github/integration.js +48 -1
- package/dist/integrations/github/integration.js.map +1 -1
- package/dist/integrations/github/provenance.d.ts +7 -2
- package/dist/integrations/github/provenance.d.ts.map +1 -1
- package/dist/integrations/github/provenance.js +16 -2
- package/dist/integrations/github/provenance.js.map +1 -1
- package/dist/integrations/github/routes.d.ts +8 -1
- package/dist/integrations/github/routes.d.ts.map +1 -1
- package/dist/integrations/github/routes.js +228 -7
- package/dist/integrations/github/routes.js.map +1 -1
- package/dist/integrations/github/rules.d.ts.map +1 -1
- package/dist/integrations/github/rules.js +193 -127
- package/dist/integrations/github/rules.js.map +1 -1
- package/dist/integrations/github/session-subscriptions.d.ts +9 -0
- package/dist/integrations/github/session-subscriptions.d.ts.map +1 -1
- package/dist/integrations/github/session-subscriptions.js +39 -1
- package/dist/integrations/github/session-subscriptions.js.map +1 -1
- package/dist/integrations/linear/routes.d.ts.map +1 -1
- package/dist/integrations/linear/routes.js +50 -0
- package/dist/integrations/linear/routes.js.map +1 -1
- package/dist/integrations/platform/github/integration.d.ts +3 -1
- package/dist/integrations/platform/github/integration.d.ts.map +1 -1
- package/dist/integrations/platform/github/integration.js +33 -0
- package/dist/integrations/platform/github/integration.js.map +1 -1
- package/dist/routes/attention.d.ts +17 -0
- package/dist/routes/attention.d.ts.map +1 -0
- package/dist/routes/attention.js +305 -0
- package/dist/routes/attention.js.map +1 -0
- package/dist/routes/intake.d.ts +5 -0
- package/dist/routes/intake.d.ts.map +1 -1
- package/dist/routes/intake.js +70 -19
- package/dist/routes/intake.js.map +1 -1
- package/dist/routes/surface.d.ts +6 -5
- package/dist/routes/surface.d.ts.map +1 -1
- package/dist/routes/surface.js +62 -43
- package/dist/routes/surface.js.map +1 -1
- package/dist/routes/work-items.d.ts.map +1 -1
- package/dist/routes/work-items.js +35 -14
- package/dist/routes/work-items.js.map +1 -1
- package/dist/rules/defaults.js +5 -5
- package/dist/rules/defaults.js.map +1 -1
- package/dist/rules/dispatch-errors.d.ts +13 -0
- package/dist/rules/dispatch-errors.d.ts.map +1 -0
- package/dist/rules/dispatch-errors.js +77 -0
- package/dist/rules/dispatch-errors.js.map +1 -0
- package/dist/rules/dispatcher.d.ts +9 -0
- package/dist/rules/dispatcher.d.ts.map +1 -1
- package/dist/rules/dispatcher.js +118 -45
- package/dist/rules/dispatcher.js.map +1 -1
- package/dist/rules/processor.d.ts.map +1 -1
- package/dist/rules/processor.js +30 -14
- package/dist/rules/processor.js.map +1 -1
- package/dist/rules/terminal-cleanup.d.ts +1 -1
- package/dist/rules/terminal-cleanup.d.ts.map +1 -1
- package/dist/rules/terminal-cleanup.js +2 -2
- package/dist/rules/terminal-cleanup.js.map +1 -1
- package/dist/rules/tools.d.ts.map +1 -1
- package/dist/rules/tools.js +9 -5
- package/dist/rules/tools.js.map +1 -1
- package/dist/rules/transition-service.d.ts +5 -2
- package/dist/rules/transition-service.d.ts.map +1 -1
- package/dist/rules/transition-service.js +15 -2
- package/dist/rules/transition-service.js.map +1 -1
- package/dist/rules/types.d.ts +6 -1
- package/dist/rules/types.d.ts.map +1 -1
- package/dist/rules/types.js +25 -1
- package/dist/rules/types.js.map +1 -1
- package/dist/secret-encryption.d.ts +25 -0
- package/dist/secret-encryption.d.ts.map +1 -0
- package/dist/secret-encryption.js +96 -0
- package/dist/secret-encryption.js.map +1 -0
- package/dist/session/factory-session.d.ts +13 -3
- package/dist/session/factory-session.d.ts.map +1 -1
- package/dist/session/factory-session.js +15 -6
- package/dist/session/factory-session.js.map +1 -1
- package/dist/session/first-exec-capture.d.ts +16 -10
- package/dist/session/first-exec-capture.d.ts.map +1 -1
- package/dist/session/first-exec-capture.js +74 -14
- package/dist/session/first-exec-capture.js.map +1 -1
- package/dist/session/first-message-capture.d.ts +14 -10
- package/dist/session/first-message-capture.d.ts.map +1 -1
- package/dist/session/first-message-capture.js +17 -11
- package/dist/session/first-message-capture.js.map +1 -1
- package/dist/session/session-title.d.ts +7 -0
- package/dist/session/session-title.d.ts.map +1 -0
- package/dist/session/session-title.js +14 -0
- package/dist/session/session-title.js.map +1 -0
- package/dist/session/thread-title-mirror.d.ts +35 -0
- package/dist/session/thread-title-mirror.d.ts.map +1 -0
- package/dist/session/thread-title-mirror.js +51 -0
- package/dist/session/thread-title-mirror.js.map +1 -0
- package/dist/storage/domains/credentials/base.d.ts +3 -1
- package/dist/storage/domains/credentials/base.d.ts.map +1 -1
- package/dist/storage/domains/credentials/base.js +33 -15
- package/dist/storage/domains/credentials/base.js.map +1 -1
- package/dist/storage/domains/custom-providers/base.d.ts +3 -1
- package/dist/storage/domains/custom-providers/base.d.ts.map +1 -1
- package/dist/storage/domains/custom-providers/base.js +45 -25
- package/dist/storage/domains/custom-providers/base.js.map +1 -1
- package/dist/storage/domains/integrations/base.d.ts +3 -1
- package/dist/storage/domains/integrations/base.d.ts.map +1 -1
- package/dist/storage/domains/integrations/base.js +28 -12
- package/dist/storage/domains/integrations/base.js.map +1 -1
- package/dist/storage/domains/source-control/base.d.ts +8 -0
- package/dist/storage/domains/source-control/base.d.ts.map +1 -1
- package/dist/storage/domains/source-control/base.js +14 -2
- package/dist/storage/domains/source-control/base.js.map +1 -1
- package/dist/storage/domains/source-control/inmemory.d.ts +4 -0
- package/dist/storage/domains/source-control/inmemory.d.ts.map +1 -1
- package/dist/storage/domains/source-control/inmemory.js +7 -0
- package/dist/storage/domains/source-control/inmemory.js.map +1 -1
- package/dist/storage/domains/work-items/base.d.ts +120 -12
- package/dist/storage/domains/work-items/base.d.ts.map +1 -1
- package/dist/storage/domains/work-items/base.js +514 -44
- package/dist/storage/domains/work-items/base.js.map +1 -1
- package/dist/work-item-branch.d.ts +23 -0
- package/dist/work-item-branch.d.ts.map +1 -0
- package/dist/work-item-branch.js +39 -0
- package/dist/work-item-branch.js.map +1 -0
- package/factory-skills/factory-rereview/SKILL.md +2 -0
- package/factory-skills/factory-review/SKILL.md +2 -0
- package/factory-skills/factory-triage/SKILL.md +7 -17
- package/package.json +5 -5
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ExternalWorkItemSource } from './storage/domains/work-items/base.js';
|
|
2
|
+
/**
|
|
3
|
+
* Where a card came from, in the vocabulary branch naming reads. Server rows
|
|
4
|
+
* map their `externalSource` into this with {@link workItemBranchSource}; the
|
|
5
|
+
* board's own `WorkItem['source']` is already this union.
|
|
6
|
+
*/
|
|
7
|
+
export type WorkItemBranchSource = 'github-issue' | 'github-pr' | 'linear-issue' | 'slack-thread' | 'manual';
|
|
8
|
+
export interface WorkItemBranchInput {
|
|
9
|
+
id: string;
|
|
10
|
+
source: WorkItemBranchSource;
|
|
11
|
+
metadata?: Record<string, unknown> | null;
|
|
12
|
+
}
|
|
13
|
+
/** Map a stored item's provenance onto the source vocabulary branch naming reads. */
|
|
14
|
+
export declare function workItemBranchSource(externalSource: ExternalWorkItemSource | null | undefined): WorkItemBranchSource;
|
|
15
|
+
/**
|
|
16
|
+
* The git branch an item's runs and sessions share, one grammar for both sides
|
|
17
|
+
* of the wire: the dispatcher names autonomous run branches with it and the
|
|
18
|
+
* board opens card sessions on it, so both converge on one checkout per item.
|
|
19
|
+
* Cards without a provider identity (manual, Slack) and cards whose metadata
|
|
20
|
+
* lost their identifier fall back to the id-derived branch.
|
|
21
|
+
*/
|
|
22
|
+
export declare function workItemBranch(item: WorkItemBranchInput): string;
|
|
23
|
+
//# sourceMappingURL=work-item-branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-item-branch.d.ts","sourceRoot":"","sources":["../src/work-item-branch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,cAAc,GAAG,QAAQ,CAAC;AAE7G,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,sBAAsB,GAAG,IAAI,GAAG,SAAS,GAAG,oBAAoB,CAOpH;AAOD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAehE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//#region src/work-item-branch.ts
|
|
2
|
+
/** Map a stored item's provenance onto the source vocabulary branch naming reads. */
|
|
3
|
+
function workItemBranchSource(externalSource) {
|
|
4
|
+
if (!externalSource) return "manual";
|
|
5
|
+
if (externalSource.integrationId === "linear") return "linear-issue";
|
|
6
|
+
if (externalSource.integrationId !== "github") return "manual";
|
|
7
|
+
return externalSource.type === "pull-request" ? "github-pr" : "github-issue";
|
|
8
|
+
}
|
|
9
|
+
function branchNumber(metadata, key) {
|
|
10
|
+
const value = metadata[key] ?? metadata.number;
|
|
11
|
+
return typeof value === "number" && Number.isInteger(value) && value > 0 ? value : void 0;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The git branch an item's runs and sessions share, one grammar for both sides
|
|
15
|
+
* of the wire: the dispatcher names autonomous run branches with it and the
|
|
16
|
+
* board opens card sessions on it, so both converge on one checkout per item.
|
|
17
|
+
* Cards without a provider identity (manual, Slack) and cards whose metadata
|
|
18
|
+
* lost their identifier fall back to the id-derived branch.
|
|
19
|
+
*/
|
|
20
|
+
function workItemBranch(item) {
|
|
21
|
+
const metadata = item.metadata ?? {};
|
|
22
|
+
if (item.source === "github-issue") {
|
|
23
|
+
const issueNumber = branchNumber(metadata, "githubIssueNumber");
|
|
24
|
+
if (issueNumber !== void 0) return `factory/issue-${issueNumber}`;
|
|
25
|
+
}
|
|
26
|
+
if (item.source === "github-pr") {
|
|
27
|
+
const pullRequestNumber = branchNumber(metadata, "githubPullRequestNumber");
|
|
28
|
+
if (pullRequestNumber !== void 0) return `factory/pr-${pullRequestNumber}`;
|
|
29
|
+
}
|
|
30
|
+
if (item.source === "linear-issue" && typeof metadata.identifier === "string") {
|
|
31
|
+
const identifier = metadata.identifier.trim();
|
|
32
|
+
if (identifier) return `factory/linear-${identifier.toLowerCase()}`;
|
|
33
|
+
}
|
|
34
|
+
return `factory/item-${item.id}`;
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { workItemBranch, workItemBranchSource };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=work-item-branch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-item-branch.js","names":[],"sources":["../src/work-item-branch.ts"],"sourcesContent":["import type { ExternalWorkItemSource } from './storage/domains/work-items/base.js';\n\n/**\n * Where a card came from, in the vocabulary branch naming reads. Server rows\n * map their `externalSource` into this with {@link workItemBranchSource}; the\n * board's own `WorkItem['source']` is already this union.\n */\nexport type WorkItemBranchSource = 'github-issue' | 'github-pr' | 'linear-issue' | 'slack-thread' | 'manual';\n\nexport interface WorkItemBranchInput {\n id: string;\n source: WorkItemBranchSource;\n metadata?: Record<string, unknown> | null;\n}\n\n/** Map a stored item's provenance onto the source vocabulary branch naming reads. */\nexport function workItemBranchSource(externalSource: ExternalWorkItemSource | null | undefined): WorkItemBranchSource {\n if (!externalSource) return 'manual';\n if (externalSource.integrationId === 'linear') return 'linear-issue';\n // Only GitHub and Linear carry provider identities; anything else (a Slack\n // thread, say) is a plain work item rather than a mislabeled GitHub issue.\n if (externalSource.integrationId !== 'github') return 'manual';\n return externalSource.type === 'pull-request' ? 'github-pr' : 'github-issue';\n}\n\nfunction branchNumber(metadata: Record<string, unknown>, key: string): number | undefined {\n const value = metadata[key] ?? metadata.number;\n return typeof value === 'number' && Number.isInteger(value) && value > 0 ? value : undefined;\n}\n\n/**\n * The git branch an item's runs and sessions share, one grammar for both sides\n * of the wire: the dispatcher names autonomous run branches with it and the\n * board opens card sessions on it, so both converge on one checkout per item.\n * Cards without a provider identity (manual, Slack) and cards whose metadata\n * lost their identifier fall back to the id-derived branch.\n */\nexport function workItemBranch(item: WorkItemBranchInput): string {\n const metadata = item.metadata ?? {};\n if (item.source === 'github-issue') {\n const issueNumber = branchNumber(metadata, 'githubIssueNumber');\n if (issueNumber !== undefined) return `factory/issue-${issueNumber}`;\n }\n if (item.source === 'github-pr') {\n const pullRequestNumber = branchNumber(metadata, 'githubPullRequestNumber');\n if (pullRequestNumber !== undefined) return `factory/pr-${pullRequestNumber}`;\n }\n if (item.source === 'linear-issue' && typeof metadata.identifier === 'string') {\n const identifier = metadata.identifier.trim();\n if (identifier) return `factory/linear-${identifier.toLowerCase()}`;\n }\n return `factory/item-${item.id}`;\n}\n"],"mappings":";;AAgBA,SAAgB,qBAAqB,gBAAiF;CACpH,IAAI,CAAC,gBAAgB,OAAO;CAC5B,IAAI,eAAe,kBAAkB,UAAU,OAAO;CAGtD,IAAI,eAAe,kBAAkB,UAAU,OAAO;CACtD,OAAO,eAAe,SAAS,iBAAiB,cAAc;AAChE;AAEA,SAAS,aAAa,UAAmC,KAAiC;CACxF,MAAM,QAAQ,SAAS,QAAQ,SAAS;CACxC,OAAO,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK,KAAK,QAAQ,IAAI,QAAQ,KAAA;AACrF;;;;;;;;AASA,SAAgB,eAAe,MAAmC;CAChE,MAAM,WAAW,KAAK,YAAY,CAAC;CACnC,IAAI,KAAK,WAAW,gBAAgB;EAClC,MAAM,cAAc,aAAa,UAAU,mBAAmB;EAC9D,IAAI,gBAAgB,KAAA,GAAW,OAAO,iBAAiB;CACzD;CACA,IAAI,KAAK,WAAW,aAAa;EAC/B,MAAM,oBAAoB,aAAa,UAAU,yBAAyB;EAC1E,IAAI,sBAAsB,KAAA,GAAW,OAAO,cAAc;CAC5D;CACA,IAAI,KAAK,WAAW,kBAAkB,OAAO,SAAS,eAAe,UAAU;EAC7E,MAAM,aAAa,SAAS,WAAW,KAAK;EAC5C,IAAI,YAAY,OAAO,kBAAkB,WAAW,YAAY;CAClE;CACA,OAAO,gBAAgB,KAAK;AAC9B"}
|
|
@@ -129,6 +129,8 @@ First, compose the **re-review handoff** — don't send it to the conversation y
|
|
|
129
129
|
- **Assumptions** — every recorded judgment call from this run.
|
|
130
130
|
- **Open questions** — any decision that genuinely needs a human.
|
|
131
131
|
|
|
132
|
+
End the handoff with `Review runtime: <model>, reasoning setting: <reasoning>.`, copying both values verbatim from the current `factory-phase` signal.
|
|
133
|
+
|
|
132
134
|
Next, publish the re-review on the PR itself — this is part of every pass, not something to wait to be asked for. Write the handoff body to `.artifacts/factory-rereview/pr-<number>.md` and submit a PR review matching the verdict:
|
|
133
135
|
|
|
134
136
|
- approve → `gh pr review <number> --approve --body-file <file>`
|
|
@@ -123,6 +123,8 @@ First, compose the **review handoff** — don't send it to the conversation yet;
|
|
|
123
123
|
- **Assumptions** — every recorded judgment call from the run.
|
|
124
124
|
- **Open questions** — any decision that genuinely needs a human.
|
|
125
125
|
|
|
126
|
+
End the handoff with `Review runtime: <model>, reasoning setting: <reasoning>.`, copying both values verbatim from the current `factory-phase` signal.
|
|
127
|
+
|
|
126
128
|
Next, publish the review on the PR itself — this is part of every pass, not something to wait to be asked for. Write the handoff body to `.artifacts/factory-review/pr-<number>.md` and submit a PR review matching the verdict:
|
|
127
129
|
|
|
128
130
|
- approve → `gh pr review <number> --approve --body-file <file>`
|
|
@@ -26,7 +26,7 @@ Gauge the people involved: the author's merged-PR/issue counts (`gh pr list --au
|
|
|
26
26
|
|
|
27
27
|
If the issue is vague, do not stop to ask for clarification. Investigate the most plausible reading of it, record that reading as an assumption, and note what extra information from the reporter would firm it up as an open question.
|
|
28
28
|
|
|
29
|
-
At the end of this phase, publish a small summary to the source issue as stated below. For GitHub issues,
|
|
29
|
+
At the end of this phase, publish a small summary to the source issue as stated below. For GitHub issues, call `github_upsert_factory_triage_comment` with the issue number and the marker-prefixed pending summary; it updates Factory’s canonical marked comment or creates it when absent. For Linear issues, publish the pending summary through Linear.
|
|
30
30
|
|
|
31
31
|
```markdown
|
|
32
32
|
<!-- mastra-factory-triage -->
|
|
@@ -134,20 +134,9 @@ For GitHub issues, fetch the current issue body, labels, and full comment thread
|
|
|
134
134
|
|
|
135
135
|
If you write the handoff to disk, use `.artifacts/factory-triage/issue-<number>.md`.
|
|
136
136
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
export FACTORY_COMMENT_AUTHOR=$(gh api user --jq .login)
|
|
141
|
-
COMMENT_ID=$(gh api --paginate "repos/$OWNER/$REPO/issues/$ISSUE/comments" \
|
|
142
|
-
--jq '.[] | select(.user.login == env.FACTORY_COMMENT_AUTHOR and (.body | contains("<!-- mastra-factory-triage -->"))) | .id' | sort -n | head -n1)
|
|
143
|
-
if [ -n "$COMMENT_ID" ]; then
|
|
144
|
-
gh api --method PATCH "repos/$OWNER/$REPO/issues/comments/$COMMENT_ID" -f body="$COMMENT_BODY"
|
|
145
|
-
else
|
|
146
|
-
gh api --method POST "repos/$OWNER/$REPO/issues/$ISSUE/comments" -f body="$COMMENT_BODY"
|
|
147
|
-
fi
|
|
148
|
-
```
|
|
137
|
+
Publish the handoff only with `github_upsert_factory_triage_comment`, passing the issue number and `COMMENT_BODY`. Set `COMMENT_BODY` to the marker followed by the structured handoff. The tool updates the oldest marked comment authored by Factory, or creates one when no Factory-owned marker remains. Use its returned canonical comment identity to confirm publication.
|
|
149
138
|
|
|
150
|
-
|
|
139
|
+
Never use `gh issue comment`, `gh api user`, a raw comment POST/PATCH, or an `--edit-last` fallback for the Factory triage marker. If the tool reports an error, fix the underlying issue or stop; do not publish an alternate marker comment.
|
|
151
140
|
|
|
152
141
|
After a GitHub comment is posted or updated, reconcile the labels before the terminal transition:
|
|
153
142
|
|
|
@@ -169,13 +158,14 @@ Apply only these label mutations. Do not remove `status: needs approval` merely
|
|
|
169
158
|
|
|
170
159
|
Post the same handoff as your final conversation message. Take the current stage and `expectedRevision` from the `factory-phase` signal.
|
|
171
160
|
|
|
172
|
-
- When the current stage is **Intake** or **Triage**, make the terminal `factory_transition_work_item` call
|
|
173
|
-
-
|
|
161
|
+
- When the current stage is **Intake** or **Triage**, make the terminal `factory_transition_work_item` call with `triageType` set to the exact `Type` from the handoff.
|
|
162
|
+
- Confirmed bugs with `Route: Plan fix` request `stage: "planning"`. Issues that should be closed request `stage: "done"` with the close rationale.
|
|
163
|
+
- Features and every other non-bug classification use `Route: Await approval` and request their current Intake/Triage stage. This records the classification without advancing; stop until a maintainer moves the card or starts the next run from the Factory UI.
|
|
174
164
|
- When the item is already in **Planning** or a later stage, this is a webhook-driven refresh: use `Route: No transition / refresh`, update the source-specific handoff, but do **not** request a stage transition. Report the updated verdict and stop.
|
|
175
165
|
|
|
176
166
|
`rationale` (max 1000 chars) — the triage verdict and headline understanding in a few sentences (e.g. "Genuine regression from <commit>; root cause understood; ready to plan a fix").
|
|
177
167
|
|
|
178
|
-
The transition is governed by the server's rules.
|
|
168
|
+
The transition is governed by the server's rules. An `approval_required` rejection means a maintainer must move the card or start the run from the Factory UI; never retry it toward Planning or Execute. For other initial-stage rejections, read the stated reason, address it (re-check the revision from the latest `factory-phase` signal, adjust the verdict if the rejection contests it), and retry once corrected. Once the transition succeeds, report the verdict and stop.
|
|
179
169
|
|
|
180
170
|
## Behavior Rules
|
|
181
171
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/factory",
|
|
3
|
-
"version": "0.10.0-alpha.
|
|
3
|
+
"version": "0.10.0-alpha.13",
|
|
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,9 +52,9 @@
|
|
|
52
52
|
"hono": "^4.12.8",
|
|
53
53
|
"zod": "^4.3.6",
|
|
54
54
|
"@mastra/auth-studio": "1.3.4",
|
|
55
|
+
"@mastra/code-sdk": "1.5.0-alpha.11",
|
|
56
|
+
"@mastra/core": "1.62.0-alpha.11",
|
|
55
57
|
"@mastra/slack": "1.6.1",
|
|
56
|
-
"@mastra/core": "1.61.1-alpha.1",
|
|
57
|
-
"@mastra/code-sdk": "1.4.1-alpha.1",
|
|
58
58
|
"@mastra/auth-workos": "1.6.4"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
"typescript-eslint": "^8.57.0",
|
|
66
66
|
"vitest": "4.1.10",
|
|
67
67
|
"@internal/lint": "0.0.125",
|
|
68
|
-
"@mastra/libsql": "1.
|
|
69
|
-
"@mastra/pg": "1.
|
|
68
|
+
"@mastra/libsql": "1.22.0-alpha.2",
|
|
69
|
+
"@mastra/pg": "1.22.0-alpha.4",
|
|
70
70
|
"@internal/types-builder": "0.0.100"
|
|
71
71
|
},
|
|
72
72
|
"engines": {
|