@guyghost/swarm-dao-core 0.16.0 → 0.16.2
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/dist/application/proposals/control-proposal.use-case.d.ts.map +1 -1
- package/dist/application/proposals/control-proposal.use-case.js +12 -0
- package/dist/application/proposals/control-proposal.use-case.js.map +1 -1
- package/dist/application/proposals/execute-proposal.use-case.d.ts +2 -0
- package/dist/application/proposals/execute-proposal.use-case.d.ts.map +1 -1
- package/dist/application/proposals/execute-proposal.use-case.js +1 -1
- package/dist/application/proposals/execute-proposal.use-case.js.map +1 -1
- package/dist/application/proposals/reject-proposal.use-case.d.ts +5 -2
- package/dist/application/proposals/reject-proposal.use-case.d.ts.map +1 -1
- package/dist/application/proposals/reject-proposal.use-case.js +12 -2
- package/dist/application/proposals/reject-proposal.use-case.js.map +1 -1
- package/dist/application/proposals/rollback-proposal.use-case.d.ts.map +1 -1
- package/dist/application/proposals/rollback-proposal.use-case.js +7 -3
- package/dist/application/proposals/rollback-proposal.use-case.js.map +1 -1
- package/dist/models/proposal.machine.d.ts.map +1 -1
- package/dist/models/proposal.machine.js +9 -2
- package/dist/models/proposal.machine.js.map +1 -1
- package/dist/presenters/proposal.presenter.d.ts.map +1 -1
- package/dist/presenters/proposal.presenter.js +4 -1
- package/dist/presenters/proposal.presenter.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/control-proposal.use-case.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAc,kBAAkB,EAAY,MAAM,sBAAsB,CAAC;AAErF,MAAM,MAAM,qBAAqB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7G,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAC7B,UAAU,EAAE,sBAAsB,CAAC;QACnC,KAAK,EAAE,SAAS,CAAC;KAClB;IAGU,OAAO,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"control-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/control-proposal.use-case.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAc,kBAAkB,EAAY,MAAM,sBAAsB,CAAC;AAErF,MAAM,MAAM,qBAAqB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7G,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAC7B,UAAU,EAAE,sBAAsB,CAAC;QACnC,KAAK,EAAE,SAAS,CAAC;KAClB;IAGU,OAAO,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiDlH,OAAO,CAAC,KAAK;CAYd"}
|
|
@@ -14,6 +14,18 @@ export class ControlProposalUseCase {
|
|
|
14
14
|
if (proposal.status !== "approved") {
|
|
15
15
|
return { ok: false, error: `Must be approved (current: ${proposal.status})` };
|
|
16
16
|
}
|
|
17
|
+
// Foreseeable ordering mistake guard (issue #141): a red-zone proposal
|
|
18
|
+
// without a completed dry-run always fails the mandatory-dry-run gate.
|
|
19
|
+
// Dispatching CONTROL_FAIL for it made the proposal a final zombie (the
|
|
20
|
+
// operator fixes the missing dry-run but the terminal state can never
|
|
21
|
+
// re-check). Refuse before any transition instead — the proposal stays
|
|
22
|
+
// approved and the operator runs the dry-run, then re-checks.
|
|
23
|
+
if (proposal.riskZone === "red" && !proposal.dryRunAt) {
|
|
24
|
+
return {
|
|
25
|
+
ok: false,
|
|
26
|
+
error: `Risk zone 'red' requires a completed dry-run before control — run dao_dry_run proposalId=${proposal.id} first. No state change was made (the proposal stays approved).`,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
17
29
|
const now = this.dependencies.clock.now();
|
|
18
30
|
const control = runGates(proposal, state.config, { allProposals: state.proposals, now });
|
|
19
31
|
state.controlResults[proposal.id] = control;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/control-proposal.use-case.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"control-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/control-proposal.use-case.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ export type ExecuteProposalResult = {
|
|
|
7
7
|
proposal: Proposal;
|
|
8
8
|
plan: DeliveryPlan;
|
|
9
9
|
snapshot: ExecutionSnapshot;
|
|
10
|
+
/** Isolated workspace the implementation must happen in, when configured. */
|
|
11
|
+
workspacePath?: string | null;
|
|
10
12
|
} | {
|
|
11
13
|
ok: false;
|
|
12
14
|
error: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/execute-proposal.use-case.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAc,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAElG,MAAM,MAAM,qBAAqB,GAC7B;
|
|
1
|
+
{"version":3,"file":"execute-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/execute-proposal.use-case.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAc,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAElG,MAAM,MAAM,qBAAqB,GAC7B;IACE,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAgBjC,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAC7B,UAAU,EAAE,sBAAsB,CAAC;QACnC,KAAK,EAAE,SAAS,CAAC;QACjB,iEAAiE;QACjE,SAAS,CAAC,EAAE,sBAAsB,CAAC;KACpC;IAGU,OAAO,CAAC,OAAO,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAmDnC"}
|
|
@@ -60,7 +60,7 @@ export class ExecuteProposalUseCase {
|
|
|
60
60
|
};
|
|
61
61
|
state.auditLog.push(audit);
|
|
62
62
|
await this.dependencies.repository.persist();
|
|
63
|
-
return { ok: true, proposal, plan, snapshot };
|
|
63
|
+
return { ok: true, proposal, plan, snapshot, workspacePath: workspacePath ?? null };
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
//# sourceMappingURL=execute-proposal.use-case.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/execute-proposal.use-case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"execute-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/execute-proposal.use-case.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,11 @@ export type RejectProposalResult = {
|
|
|
13
13
|
/**
|
|
14
14
|
* Human rejection path: an auditable veto/withdrawal of a proposal.
|
|
15
15
|
* The proposal machine decides which event applies (DISCARD from `open`,
|
|
16
|
-
* REJECT from `deliberating`/`approved`); this use case only picks
|
|
17
|
-
* event from the persisted status and records who rejected, and why.
|
|
16
|
+
* REJECT from `deliberating`/`approved`/`failed`); this use case only picks
|
|
17
|
+
* the event from the persisted status and records who rejected, and why.
|
|
18
|
+
* REJECT from `failed` is a closure annotation: the lifecycle is terminal,
|
|
19
|
+
* but the machine keeps this one transition so a dead proposal can carry an
|
|
20
|
+
* auditable reason instead of being an unannotatable zombie (issue #141).
|
|
18
21
|
*/
|
|
19
22
|
export declare class RejectProposalUseCase {
|
|
20
23
|
private readonly dependencies;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reject-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/reject-proposal.use-case.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reject-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/reject-proposal.use-case.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGxE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC;;;;;;;;GAQG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAC7B,UAAU,EAAE,sBAAsB,CAAC;QACnC,KAAK,EAAE,SAAS,CAAC;KAClB;IAGU,OAAO,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAsCpH"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { dispatchProposalEvent } from "../../governance/proposal.utils.js";
|
|
2
|
+
import { PROPOSAL_FINAL_STATUSES } from "../../models/proposal.machine.js";
|
|
2
3
|
/**
|
|
3
4
|
* Human rejection path: an auditable veto/withdrawal of a proposal.
|
|
4
5
|
* The proposal machine decides which event applies (DISCARD from `open`,
|
|
5
|
-
* REJECT from `deliberating`/`approved`); this use case only picks
|
|
6
|
-
* event from the persisted status and records who rejected, and why.
|
|
6
|
+
* REJECT from `deliberating`/`approved`/`failed`); this use case only picks
|
|
7
|
+
* the event from the persisted status and records who rejected, and why.
|
|
8
|
+
* REJECT from `failed` is a closure annotation: the lifecycle is terminal,
|
|
9
|
+
* but the machine keeps this one transition so a dead proposal can carry an
|
|
10
|
+
* auditable reason instead of being an unannotatable zombie (issue #141).
|
|
7
11
|
*/
|
|
8
12
|
export class RejectProposalUseCase {
|
|
9
13
|
dependencies;
|
|
@@ -20,6 +24,12 @@ export class RejectProposalUseCase {
|
|
|
20
24
|
if (!command.reason || command.reason.trim().length === 0) {
|
|
21
25
|
return { ok: false, error: "A rejection reason is required (it is recorded in the audit trail)." };
|
|
22
26
|
}
|
|
27
|
+
if (PROPOSAL_FINAL_STATUSES.has(proposal.status)) {
|
|
28
|
+
return {
|
|
29
|
+
ok: false,
|
|
30
|
+
error: `Proposal is in terminal status "${proposal.status}"; no transitions are permitted`,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
23
33
|
const event = proposal.status === "open" ? { type: "DISCARD" } : { type: "REJECT" };
|
|
24
34
|
const dispatched = dispatchProposalEvent(proposal, event, { clock: this.dependencies.clock });
|
|
25
35
|
if (!dispatched.ok)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reject-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/reject-proposal.use-case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAS3E
|
|
1
|
+
{"version":3,"file":"reject-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/reject-proposal.use-case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAS3E;;;;;;;;GAQG;AACH,MAAM,OAAO,qBAAqB;IAEb;IADnB,YACmB,YAGhB;QAHgB,iBAAY,GAAZ,YAAY,CAG5B;IACA,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,OAA8D;QACjF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;QACjG,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1F,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,OAAO,CAAC,UAAU,aAAa,EAAE,CAAC;QACzF,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qEAAqE,EAAE,CAAC;QACrG,CAAC;QACD,IAAI,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,mCAAmC,QAAQ,CAAC,MAAM,iCAAiC;aAC3F,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,SAAS,EAAY,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,QAAQ,EAAY,CAAC;QAC1G,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,UAAU,CAAC;QAEtC,MAAM,KAAK,GAAe;YACxB,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE;YACvB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE;YACxC,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,mBAAmB;YAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;SACnD,CAAC;QACF,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC7C,OAAO;YACL,EAAE,EAAE,IAAI;YACR,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE,KAAK,CAAC,IAAI;YACf,OAAO,EAAE,aAAa,QAAQ,CAAC,EAAE,iBAAiB,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,KAAK,GAAG;SACpF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollback-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/rollback-proposal.use-case.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,qBAAa,uBAAuB;IACf,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAAE,UAAU,EAAE,sBAAsB,CAAA;KAAE;IAE3E,OAAO,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"rollback-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/rollback-proposal.use-case.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,qBAAa,uBAAuB;IACf,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAAE,UAAU,EAAE,sBAAsB,CAAA;KAAE;IAE3E,OAAO,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAavF"}
|
|
@@ -7,10 +7,14 @@ export class RollbackProposalUseCase {
|
|
|
7
7
|
const snapshot = this.dependencies.repository.get().snapshots[command.proposalId];
|
|
8
8
|
if (!snapshot)
|
|
9
9
|
return { ok: false, error: `No snapshot found for proposal #${command.proposalId}` };
|
|
10
|
+
// Honest boundary: this use case performs no git operations and the
|
|
11
|
+
// execution snapshot carries no recoverable commit (commitSha is recorded
|
|
12
|
+
// as "unknown" and filesChanged is never populated), so an automated
|
|
13
|
+
// revert cannot exist. Claiming success here reported a rollback that
|
|
14
|
+
// never happened; surface the manual path instead.
|
|
10
15
|
return {
|
|
11
|
-
ok:
|
|
12
|
-
snapshot,
|
|
13
|
-
message: `Proposal #${command.proposalId} rolled back to commit ${snapshot.commitSha.slice(0, 8)} on branch ${snapshot.branch}`,
|
|
16
|
+
ok: false,
|
|
17
|
+
error: `Automated rollback is not supported: the execution snapshot for proposal #${command.proposalId} carries no recoverable commit (branch ${snapshot.branch}). Restore the workspace/branch manually from git history, then correct the proposal state if needed.`,
|
|
14
18
|
};
|
|
15
19
|
}
|
|
16
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollback-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/rollback-proposal.use-case.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,uBAAuB;IACE;IAApC,YAAoC,YAAoD;QAApD,iBAAY,GAAZ,YAAY,CAAwC;IAAG,CAAC;IAErF,KAAK,CAAC,OAAO,CAAC,OAA+B;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACpG,
|
|
1
|
+
{"version":3,"file":"rollback-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/rollback-proposal.use-case.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,uBAAuB;IACE;IAApC,YAAoC,YAAoD;QAApD,iBAAY,GAAZ,YAAY,CAAwC;IAAG,CAAC;IAErF,KAAK,CAAC,OAAO,CAAC,OAA+B;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACpG,oEAAoE;QACpE,0EAA0E;QAC1E,qEAAqE;QACrE,sEAAsE;QACtE,mDAAmD;QACnD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,6EAA6E,OAAO,CAAC,UAAU,0CAA0C,QAAQ,CAAC,MAAM,uGAAuG;SACvQ,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposal.machine.d.ts","sourceRoot":"","sources":["../../src/models/proposal.machine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnG,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"proposal.machine.d.ts","sourceRoot":"","sources":["../../src/models/proposal.machine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnG,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAMvC,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,cAAc,CAAqC,CAAC;AAEtG,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAE/D;AA2BD,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,cAAuB;UA7C1D,YAAY;;UACZ,SAAS;WAAS,WAAW;;UAC7B,QAAQ;;UACR,cAAc;YAAU,kBAAkB;;UAC1C,cAAc;;UACd,iBAAiB;;UACjB,MAAM;;UACN,SAAS;;UACT,OAAO;aAAW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GA+EnC"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { assign, setup } from "xstate";
|
|
2
|
-
|
|
2
|
+
// `failed` is deliberately NOT final (issue #141): a gate failure is by
|
|
3
|
+
// definition recoverable, and a dead proposal must stay annotatable — the
|
|
4
|
+
// machine gives `failed` exactly one transition (REJECT → rejected) so the
|
|
5
|
+
// closure reason is auditable while no lifecycle reuse is possible.
|
|
6
|
+
export const PROPOSAL_FINAL_STATUSES = new Set(["executed", "rejected"]);
|
|
3
7
|
export function isProposalFinal(status) {
|
|
4
8
|
return PROPOSAL_FINAL_STATUSES.has(status);
|
|
5
9
|
}
|
|
@@ -60,7 +64,10 @@ export function createProposalMachine(initial = "open") {
|
|
|
60
64
|
},
|
|
61
65
|
},
|
|
62
66
|
executed: { type: "final" },
|
|
63
|
-
failed
|
|
67
|
+
// `failed` is lifecycle-final (see PROPOSAL_FINAL_STATUSES) but keeps
|
|
68
|
+
// one closure transition: REJECT records an auditable reason on a dead
|
|
69
|
+
// proposal instead of leaving an unannotatable zombie (issue #141).
|
|
70
|
+
failed: { on: { REJECT: { target: "rejected", actions: "recordTransition" } } },
|
|
64
71
|
rejected: { type: "final" },
|
|
65
72
|
},
|
|
66
73
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposal.machine.js","sourceRoot":"","sources":["../../src/models/proposal.machine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AA2BvC,MAAM,CAAC,MAAM,uBAAuB,GAAgC,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"proposal.machine.js","sourceRoot":"","sources":["../../src/models/proposal.machine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposal.presenter.d.ts","sourceRoot":"","sources":["../../src/presenters/proposal.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gEAAgE,CAAC;AACpH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACzG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AACrG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAM7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGnG,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAGjE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAGzE;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,wBAAwB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,EACvD,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACxD,MAAM,CAGR;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAElE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"proposal.presenter.d.ts","sourceRoot":"","sources":["../../src/presenters/proposal.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gEAAgE,CAAC;AACpH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACzG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AACrG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAM7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGnG,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAGjE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAGzE;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,wBAAwB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,EACvD,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACxD,MAAM,CAGR;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAElE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAQ7F;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAErF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,6BAA6B,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAErG;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE1D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAEjE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAEtE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAE5F"}
|
|
@@ -24,7 +24,10 @@ export function presentExecution(result) {
|
|
|
24
24
|
const taskCount = result.plan.phases.reduce((sum, phase) => sum + phase.tasks.length, 0);
|
|
25
25
|
// snapshot.branch is the branch actually used: the delivery plan strategy
|
|
26
26
|
// without isolation, the isolated dao/<id>-<slug> branch with a workspace.
|
|
27
|
-
|
|
27
|
+
// The workspace path is essential: implementation is delegated to the
|
|
28
|
+
// session agent, which cannot act on a branch name alone.
|
|
29
|
+
const workspace = result.workspacePath ?? "the current repository (no isolation)";
|
|
30
|
+
return `# ✅ Proposal Executed — #${result.proposal.id}\n\n**Title:** ${result.proposal.title}\n**Status:** 🚀 executed\n**Branch:** \`${result.snapshot.branch}\`\n**Workspace:** \`${workspace}\`\n**Plan:** ${result.plan.phases.length} phases, ${taskCount} tasks\n\nImplementation is delegated to the session agent — begin NOW: work in the workspace above on the branch above (run \`dao_plan proposalId=${result.proposal.id}\` for the full task list), implement the phases in order, and commit on the branch. Run \`dao_ship proposalId=${result.proposal.id}\` when the work is complete and verified.`;
|
|
28
31
|
}
|
|
29
32
|
export function presentShip(result) {
|
|
30
33
|
return `# 🚀 Ship Complete\n\nShipped proposals:\n${result.shipped.map((id) => `- #${id}`).join("\n")}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposal.presenter.js","sourceRoot":"","sources":["../../src/presenters/proposal.presenter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,UAAU,sBAAsB,CAAC,QAAkB;IACvD,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;IACvE,OAAO,4BAA4B,QAAQ,CAAC,EAAE,kBAAkB,QAAQ,CAAC,KAAK,eAAe,QAAQ,CAAC,IAAI,MAAM,SAAS,eAAe,QAAQ,CAAC,QAAQ,uCAAuC,QAAQ,CAAC,EAAE,IAAI,CAAC;AAClN,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAA2B;IAC/D,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACpC,OAAO,wBAAwB,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,0FAA0F,CAAC;AAC5J,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,MAAuD,EACvD,OAAyD;IAEzD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,KAAK,CAAC;IACtF,OAAO,kCAAkC,UAAU,GAAG,QAAQ,OAAO,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,SAAS,iBAAiB,OAAO,CAAC,eAAe,eAAe,UAAU,IAAI,CAAC;AACrP,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAA2B;IACxD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAoD;IACnF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzF,0EAA0E;IAC1E,2EAA2E;IAC3E,OAAO,4BAA4B,MAAM,CAAC,QAAQ,CAAC,EAAE,kBAAkB,MAAM,CAAC,QAAQ,CAAC,KAAK,4CAA4C,MAAM,CAAC,QAAQ,CAAC,MAAM,iBAAiB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,YAAY,SAAS,
|
|
1
|
+
{"version":3,"file":"proposal.presenter.js","sourceRoot":"","sources":["../../src/presenters/proposal.presenter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,UAAU,sBAAsB,CAAC,QAAkB;IACvD,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;IACvE,OAAO,4BAA4B,QAAQ,CAAC,EAAE,kBAAkB,QAAQ,CAAC,KAAK,eAAe,QAAQ,CAAC,IAAI,MAAM,SAAS,eAAe,QAAQ,CAAC,QAAQ,uCAAuC,QAAQ,CAAC,EAAE,IAAI,CAAC;AAClN,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAA2B;IAC/D,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACpC,OAAO,wBAAwB,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,0FAA0F,CAAC;AAC5J,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,MAAuD,EACvD,OAAyD;IAEzD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,KAAK,CAAC;IACtF,OAAO,kCAAkC,UAAU,GAAG,QAAQ,OAAO,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,SAAS,iBAAiB,OAAO,CAAC,eAAe,eAAe,UAAU,IAAI,CAAC;AACrP,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAA2B;IACxD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAoD;IACnF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzF,0EAA0E;IAC1E,2EAA2E;IAC3E,sEAAsE;IACtE,0DAA0D;IAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,IAAI,uCAAuC,CAAC;IAClF,OAAO,4BAA4B,MAAM,CAAC,QAAQ,CAAC,EAAE,kBAAkB,MAAM,CAAC,QAAQ,CAAC,KAAK,4CAA4C,MAAM,CAAC,QAAQ,CAAC,MAAM,wBAAwB,SAAS,iBAAiB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,YAAY,SAAS,sJAAsJ,MAAM,CAAC,QAAQ,CAAC,EAAE,kHAAkH,MAAM,CAAC,QAAQ,CAAC,EAAE,4CAA4C,CAAC;AACzlB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAiD;IAC3E,OAAO,6CAA6C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1G,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAA4D;IAC3F,OAAO,8BAA8B,MAAM,CAAC,QAAQ,CAAC,EAAE,aAAa,MAAM,CAAC,OAAO,CAAC,IAAI,uCAAuC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;AACvJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAoB;IAChD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,OAAO,0BAA0B,MAAM,CAAC,UAAU,kBAAkB,MAAM,CAAC,KAAK,oBAAoB,MAAM,CAAC,OAAO,EAAE,CAAC;AACvH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAkB;IACvD,OAAO,4BAA4B,QAAQ,CAAC,EAAE,6BAA6B,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAA8B;IAC5D,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,0BAA0B,MAAM,CAAC,KAAK,EAAE,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAmD;IAClF,OAAO,6BAA6B,MAAM,CAAC,UAAU,gBAAgB,MAAM,CAAC,GAAG,oGAAoG,CAAC;AACtL,CAAC"}
|