otacon 0.1.2 → 0.1.3
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/cli/client.js +11 -0
- package/dist/cli/client.js.map +1 -1
- package/dist/cli/commands/start.js +7 -0
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/update.js +76 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/main.js +6 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/update.js +195 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/daemon/ui.js +6 -1
- package/dist/daemon/ui.js.map +1 -1
- package/dist/shared/config.js +12 -1
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/paths.js +8 -0
- package/dist/shared/paths.js.map +1 -1
- package/dist/shared/version.js +1 -1
- package/dist/ui/assets/{arc-KT3ZnaMp.js → arc-Cp3sPd_U.js} +1 -1
- package/dist/ui/assets/architecture-7EHR7CIX-BbwstElO.js +1 -0
- package/dist/ui/assets/{architectureDiagram-3BPJPVTR-DLu0UM7N.js → architectureDiagram-3BPJPVTR-C4F3heWP.js} +1 -1
- package/dist/ui/assets/{blockDiagram-GPEHLZMM-B8wApEWC.js → blockDiagram-GPEHLZMM-DmJoG8ky.js} +1 -1
- package/dist/ui/assets/{c4Diagram-AAUBKEIU-BNS5gmQS.js → c4Diagram-AAUBKEIU-BDEf52Jp.js} +1 -1
- package/dist/ui/assets/channel-BMK3JFRf.js +1 -0
- package/dist/ui/assets/{chunk-2J33WTMH-CTY2etwY.js → chunk-2J33WTMH-Dh_UFriv.js} +1 -1
- package/dist/ui/assets/{chunk-3OPIFGDE-DZM4Sz84.js → chunk-3OPIFGDE-c66RlAN8.js} +1 -1
- package/dist/ui/assets/{chunk-4BX2VUAB-sGwrrXIO.js → chunk-4BX2VUAB-CrGJaCCg.js} +1 -1
- package/dist/ui/assets/{chunk-55IACEB6-CGlNp76o.js → chunk-55IACEB6-BvwqEeyq.js} +1 -1
- package/dist/ui/assets/{chunk-5ZQYHXKU-5zebJ3jW.js → chunk-5ZQYHXKU-BfF2IfQe.js} +1 -1
- package/dist/ui/assets/{chunk-727SXJPM-DelmUpvy.js → chunk-727SXJPM-DOEUwc9I.js} +1 -1
- package/dist/ui/assets/{chunk-AQP2D5EJ-DMVzBf3M.js → chunk-AQP2D5EJ-CVf2xV2Z.js} +1 -1
- package/dist/ui/assets/{chunk-BSJP7CBP-CZHrcpSu.js → chunk-BSJP7CBP-D_EbTWTC.js} +1 -1
- package/dist/ui/assets/{chunk-CSCIHK7Q-C1efTp0O.js → chunk-CSCIHK7Q-CkxTSMAM.js} +1 -1
- package/dist/ui/assets/{chunk-FMBD7UC4-B6axGwgn.js → chunk-FMBD7UC4-DVShhFc7.js} +1 -1
- package/dist/ui/assets/{chunk-KSCS5N6A-DSaxbrm0.js → chunk-KSCS5N6A-DnHEEYpq.js} +1 -1
- package/dist/ui/assets/{chunk-L5ZTLDWV-D9ZKdVGx.js → chunk-L5ZTLDWV-B_gjyajS.js} +1 -1
- package/dist/ui/assets/{chunk-LZXEDZCA-DI5_1s00.js → chunk-LZXEDZCA-Bsf7basG.js} +2 -2
- package/dist/ui/assets/{chunk-ND2GUHAM-DQQ4RVLE.js → chunk-ND2GUHAM-DGepGb8_.js} +1 -1
- package/dist/ui/assets/{chunk-NZK2D7GU-9zJJaDpb.js → chunk-NZK2D7GU-BJIlh-gB.js} +1 -1
- package/dist/ui/assets/{chunk-O5CBEL6O-DUOshAt2.js → chunk-O5CBEL6O-cdVbOOCs.js} +1 -1
- package/dist/ui/assets/chunk-QZHKN3VN-DLNUTn7U.js +1 -0
- package/dist/ui/assets/chunk-WU5MYG2G-ipH3YPcA.js +1 -0
- package/dist/ui/assets/{chunk-XPW4576I-DQVL_GAl.js → chunk-XPW4576I-DPW39hNO.js} +1 -1
- package/dist/ui/assets/classDiagram-4FO5ZUOK-CvIMLlSD.js +1 -0
- package/dist/ui/assets/classDiagram-v2-Q7XG4LA2-CvIMLlSD.js +1 -0
- package/dist/ui/assets/{cose-bilkent-S5V4N54A-C7m3VlSW.js → cose-bilkent-S5V4N54A-DmMsC6om.js} +1 -1
- package/dist/ui/assets/{dagre-BM42HDAG-CoU_T6EY.js → dagre-BM42HDAG-BmVr7T7Z.js} +1 -1
- package/dist/ui/assets/{diagram-2AECGRRQ-C_R7oNKE.js → diagram-2AECGRRQ-e0VnXEyj.js} +1 -1
- package/dist/ui/assets/{diagram-5GNKFQAL-UhE2W3Yi.js → diagram-5GNKFQAL-SCJGYE6m.js} +1 -1
- package/dist/ui/assets/{diagram-KO2AKTUF-D4KZCRld.js → diagram-KO2AKTUF-DDUZO1Mj.js} +1 -1
- package/dist/ui/assets/{diagram-LMA3HP47-CsOe8-S6.js → diagram-LMA3HP47-5x1ypf6a.js} +1 -1
- package/dist/ui/assets/{diagram-OG6HWLK6-Bkbs2V54.js → diagram-OG6HWLK6-3nDhrQ20.js} +1 -1
- package/dist/ui/assets/{dist-BcowSnUl.js → dist-NEinnePC.js} +1 -1
- package/dist/ui/assets/{erDiagram-TEJ5UH35-DJXsykZz.js → erDiagram-TEJ5UH35-BNvwSDNZ.js} +1 -1
- package/dist/ui/assets/eventmodeling-FCH6USID-BeFWDbla.js +1 -0
- package/dist/ui/assets/{flowDiagram-I6XJVG4X-Chguj9Xz.js → flowDiagram-I6XJVG4X-Bt_wDUhb.js} +1 -1
- package/dist/ui/assets/{ganttDiagram-6RSMTGT7-DXdpFesp.js → ganttDiagram-6RSMTGT7-DVcJ0rNX.js} +1 -1
- package/dist/ui/assets/{gitGraph-WXDBUCRP-Doq1CcxB.js → gitGraph-WXDBUCRP-CO_SyAgP.js} +1 -1
- package/dist/ui/assets/{gitGraphDiagram-PVQCEYII-uxGwHEPv.js → gitGraphDiagram-PVQCEYII-oDyO3lWI.js} +1 -1
- package/dist/ui/assets/index-CJJIQ0dr.css +1 -0
- package/dist/ui/assets/index-Dh5CsH24.js +11 -0
- package/dist/ui/assets/{info-J43DQDTF-CgWT_d3M.js → info-J43DQDTF-Bn17NS7h.js} +1 -1
- package/dist/ui/assets/{infoDiagram-5YYISTIA-B3oDA2Ct.js → infoDiagram-5YYISTIA-HG1opLLT.js} +1 -1
- package/dist/ui/assets/{ishikawaDiagram-YF4QCWOH-C6l0lvC3.js → ishikawaDiagram-YF4QCWOH-Di_yQwi8.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-JHISSGLW-COf53NwC.js → journeyDiagram-JHISSGLW-DZtHvLeE.js} +1 -1
- package/dist/ui/assets/{kanban-definition-UN3LZRKU-DaOPRBld.js → kanban-definition-UN3LZRKU-B_RCx3Km.js} +1 -1
- package/dist/ui/assets/{line-new3jLu3.js → line-DenX-zXQ.js} +1 -1
- package/dist/ui/assets/{linear-yA22knFB.js → linear-dly_ngoq.js} +1 -1
- package/dist/ui/assets/{mermaid-parser.core-D8JVCOKU.js → mermaid-parser.core-CRmtm0s9.js} +2 -2
- package/dist/ui/assets/{mermaid.core-BCrPyVBK.js → mermaid.core-C_3KVfpx.js} +3 -3
- package/dist/ui/assets/{mindmap-definition-RKZ34NQL-CVcJTWsW.js → mindmap-definition-RKZ34NQL-wdzSyYO6.js} +1 -1
- package/dist/ui/assets/{packet-YPE3B663-DlSwpK-G.js → packet-YPE3B663-tUyFmR11.js} +1 -1
- package/dist/ui/assets/{pie-LRSECV5Y-CyMpbo4C.js → pie-LRSECV5Y-Cel48VVp.js} +1 -1
- package/dist/ui/assets/{pieDiagram-4H26LBE5-Dy7day5R.js → pieDiagram-4H26LBE5-B55ypWtu.js} +1 -1
- package/dist/ui/assets/{plan-view-CE2ha0qY.js → plan-view-CMoo3_gE.js} +3 -3
- package/dist/ui/assets/{quadrantDiagram-W4KKPZXB-CVjVgbaQ.js → quadrantDiagram-W4KKPZXB-9WcKQV0a.js} +1 -1
- package/dist/ui/assets/{radar-GUYGQ44K-DLPfv0jT.js → radar-GUYGQ44K-w5pk53Vr.js} +1 -1
- package/dist/ui/assets/{requirementDiagram-4Y6WPE33-y_0KOdN8.js → requirementDiagram-4Y6WPE33-CzE82fXz.js} +1 -1
- package/dist/ui/assets/{sankeyDiagram-5OEKKPKP-8T3b7meL.js → sankeyDiagram-5OEKKPKP-DSGO39je.js} +1 -1
- package/dist/ui/assets/{sequenceDiagram-3UESZ5HK-Cn8DZiEr.js → sequenceDiagram-3UESZ5HK-BKSDDr0S.js} +1 -1
- package/dist/ui/assets/{src-BieOuieI.js → src-JXBGgRt-.js} +1 -1
- package/dist/ui/assets/{stateDiagram-AJRCARHV-nPEVGd3E.js → stateDiagram-AJRCARHV-DZHYA9aj.js} +1 -1
- package/dist/ui/assets/stateDiagram-v2-BHNVJYJU-DnAfDlvZ.js +1 -0
- package/dist/ui/assets/{timeline-definition-PNZ67QCA-Dj_qK0VJ.js → timeline-definition-PNZ67QCA-WqJFw7aE.js} +1 -1
- package/dist/ui/assets/{treeView-BLDUP644-G5Bsebqu.js → treeView-BLDUP644-DoIQYMiz.js} +1 -1
- package/dist/ui/assets/{treemap-LRROVOQU-anUEJzTb.js → treemap-LRROVOQU-BA9si_Mo.js} +1 -1
- package/dist/ui/assets/{vennDiagram-CIIHVFJN-D71ne3dS.js → vennDiagram-CIIHVFJN-BvWRUfFr.js} +1 -1
- package/dist/ui/assets/{wardley-L42UT6IY-DrJilmE_.js → wardley-L42UT6IY-Cf9PU44t.js} +1 -1
- package/dist/ui/assets/{wardleyDiagram-YWT4CUSO-B66G4ayp.js → wardleyDiagram-YWT4CUSO-CGuxl7AU.js} +1 -1
- package/dist/ui/assets/{xychartDiagram-2RQKCTM6-CReSRxNG.js → xychartDiagram-2RQKCTM6-CNteNXpe.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/package.json +1 -1
- package/dist/ui/assets/architecture-7EHR7CIX-Cw3I1lil.js +0 -1
- package/dist/ui/assets/channel-CkOta24Z.js +0 -1
- package/dist/ui/assets/chunk-QZHKN3VN-DqRxzBM_.js +0 -1
- package/dist/ui/assets/chunk-WU5MYG2G-B1Mk3aBp.js +0 -1
- package/dist/ui/assets/classDiagram-4FO5ZUOK-BH-5P4jH.js +0 -1
- package/dist/ui/assets/classDiagram-v2-Q7XG4LA2-BH-5P4jH.js +0 -1
- package/dist/ui/assets/eventmodeling-FCH6USID-DSDI1f5T.js +0 -1
- package/dist/ui/assets/index-BsTJ9Ul_.css +0 -1
- package/dist/ui/assets/index-D-TSanrw.js +0 -11
- package/dist/ui/assets/stateDiagram-v2-BHNVJYJU-CKrff-KJ.js +0 -1
package/dist/cli/client.js
CHANGED
|
@@ -83,6 +83,17 @@ function daemonEntry() {
|
|
|
83
83
|
// spawned by resolved file path").
|
|
84
84
|
return fileURLToPath(new URL("../daemon/main.ts", import.meta.url));
|
|
85
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* True when this CLI is running from a source checkout rather than a built
|
|
88
|
+
* `dist/` install — exactly the signal `daemonEntry()` uses (no built
|
|
89
|
+
* `dist/daemon/main.js` sibling means we're a `bun run src/...` dev run). The
|
|
90
|
+
* auto-update gate (update.ts, DESIGN.md §16) reuses this to skip self-update: a
|
|
91
|
+
* global npm package update is meaningless, and would be destructive, from a
|
|
92
|
+
* source tree (D6).
|
|
93
|
+
*/
|
|
94
|
+
export function isSourceRun() {
|
|
95
|
+
return !existsSync(fileURLToPath(new URL("../daemon/main.js", import.meta.url)));
|
|
96
|
+
}
|
|
86
97
|
/** Spawn the daemon detached; returns the child's exit code, undefined while alive. */
|
|
87
98
|
function spawnDaemon() {
|
|
88
99
|
mkdirSync(otaconHome(), { recursive: true });
|
package/dist/cli/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/cli/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/cli/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,14 @@ import { parseArgs } from "node:util";
|
|
|
5
5
|
import { api, baseUrl, ensureDaemon } from "../client.js";
|
|
6
6
|
import { fail, notice, printJson, usageError } from "../output.js";
|
|
7
7
|
import { currentBranch, findRepoRoot, realpathOr } from "../session.js";
|
|
8
|
+
import { maybeAutoUpdate } from "../update.js";
|
|
8
9
|
export async function startCommand(argv) {
|
|
10
|
+
// Pre-session auto-update gate (DESIGN.md §16): on a newer published version
|
|
11
|
+
// this self-updates and re-execs `start` with the original argv, so the flags
|
|
12
|
+
// below are reconstructed exactly; in every other case it returns and we
|
|
13
|
+
// proceed on the installed version. Must run before ensureDaemon so the
|
|
14
|
+
// re-exec's version handshake restarts the stale daemon.
|
|
15
|
+
await maybeAutoUpdate(argv);
|
|
9
16
|
const { values } = parseArgs({
|
|
10
17
|
args: argv,
|
|
11
18
|
options: { title: { type: "string" }, quick: { type: "boolean", default: false } },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAE5E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAE5E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,6EAA6E;IAC7E,8EAA8E;IAC9E,yEAAyE;IACzE,wEAAwE;IACxE,yDAAyD;IACzD,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAE5B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;KACnF,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7D,UAAU,CAAC,mCAAmC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,0EAA0E;QAC1E,MAAM,CAAC,GAAG,GAAG,4DAA4D,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,IAAI,GAAG,CAAC;IAE5B,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE;QACjD,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI;QACJ,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;QACvD,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI;KAC7B,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,0BAA0B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAkC,CAAC;IAE3D,SAAS,CAAC;QACR,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI;QACJ,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,OAAO,CAAC,EAAE,EAAE;KACpC,CAAC,CAAC;IACH,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// otacon update [--check] — the manual/forced upgrade command (DESIGN.md §6,
|
|
2
|
+
// §16). It deliberately bypasses the auto-update gate's two suppressors: it
|
|
3
|
+
// ignores the 1h throttle (the user asked NOW) and `update.auto:false` (an
|
|
4
|
+
// explicit command overrides a config that only governs the implicit start-time
|
|
5
|
+
// check). It still fails open on a registry blip and never escalates to sudo —
|
|
6
|
+
// it shares `runNpmUpdate` with the start-time gate, so the install behavior is
|
|
7
|
+
// identical (D12, plan docs/plans/2026-06-19-auto-update-outdated-version.md).
|
|
8
|
+
//
|
|
9
|
+
// --check report current/latest/outdated and exit; never installs (a dry run
|
|
10
|
+
// for "am I behind?", and the only safe mode in CI / pinned shops).
|
|
11
|
+
//
|
|
12
|
+
// stdout is the usual single JSON line; npm's own progress and our notices go to
|
|
13
|
+
// stderr. Exit 0 on every reported outcome except an attempted-but-failed
|
|
14
|
+
// install, which is the one expected exit-1 failure (the manual command to run
|
|
15
|
+
// is on stderr).
|
|
16
|
+
import { parseArgs } from "node:util";
|
|
17
|
+
import { VERSION } from "../../shared/version.js";
|
|
18
|
+
import { isSourceRun } from "../client.js";
|
|
19
|
+
import { notice, printJson } from "../output.js";
|
|
20
|
+
import { fetchLatest, isNewer, runNpmUpdate } from "../update.js";
|
|
21
|
+
const REAL_DEPS = {
|
|
22
|
+
fetch: fetchLatest,
|
|
23
|
+
runNpmUpdate,
|
|
24
|
+
sourceRun: isSourceRun,
|
|
25
|
+
};
|
|
26
|
+
export async function updateCommand(argv, deps = REAL_DEPS) {
|
|
27
|
+
const { values } = parseArgs({
|
|
28
|
+
args: argv,
|
|
29
|
+
options: { check: { type: "boolean", default: false } },
|
|
30
|
+
});
|
|
31
|
+
// Dev-run refusal (D6): a source checkout has no global package to update.
|
|
32
|
+
if (deps.sourceRun()) {
|
|
33
|
+
notice("running otacon from a source checkout; nothing to update");
|
|
34
|
+
printJson({ ok: true, source: true, version: VERSION });
|
|
35
|
+
return 0;
|
|
36
|
+
}
|
|
37
|
+
// Fail-open (D5): a transient registry blip is not a hard error — report that
|
|
38
|
+
// we couldn't check and exit 0, exactly as the start-time gate proceeds.
|
|
39
|
+
const latest = await deps.fetch();
|
|
40
|
+
if (latest === undefined) {
|
|
41
|
+
notice("could not reach the npm registry to check for updates; try again later");
|
|
42
|
+
printJson({ ok: true, current: VERSION, latest: null, outdated: false });
|
|
43
|
+
return 0;
|
|
44
|
+
}
|
|
45
|
+
const outdated = isNewer(latest, VERSION);
|
|
46
|
+
// --check never installs: it's the dry run.
|
|
47
|
+
if (values.check === true) {
|
|
48
|
+
printJson({ ok: true, current: VERSION, latest, outdated });
|
|
49
|
+
return 0;
|
|
50
|
+
}
|
|
51
|
+
// Already current: nothing to do.
|
|
52
|
+
if (!outdated) {
|
|
53
|
+
printJson({ ok: true, current: VERSION, latest, outdated: false, updated: false });
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
// Outdated: install. On failure this is the one expected exit-1 path.
|
|
57
|
+
if (!deps.runNpmUpdate(latest).ok) {
|
|
58
|
+
notice("auto-update failed; run: npm install -g otacon@latest");
|
|
59
|
+
printJson({
|
|
60
|
+
ok: false,
|
|
61
|
+
error: { code: "E_UPDATE_FAILED", message: "npm install -g otacon@latest failed" },
|
|
62
|
+
});
|
|
63
|
+
return 1;
|
|
64
|
+
}
|
|
65
|
+
// Success. This process is STILL the old code (the binary was swapped under
|
|
66
|
+
// it), so we do NOT restart the daemon here: ensureDaemon from this old CLI
|
|
67
|
+
// would see daemon.version === this process's (old) VERSION and find no
|
|
68
|
+
// mismatch, so it could not pull the new version anyway. The new daemon (and
|
|
69
|
+
// the open tabs' self-heal) come up on the NEXT `otacon` invocation, which
|
|
70
|
+
// runs the freshly-installed binary and trips the version handshake. We report
|
|
71
|
+
// that accurately rather than claim a restart that didn't happen (D12).
|
|
72
|
+
notice(`updated otacon ${VERSION} → ${latest}; the daemon and any open tabs update on your next otacon command`);
|
|
73
|
+
printJson({ ok: true, updated: true, from: VERSION, to: latest });
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.js
CHANGED
|
@@ -15,11 +15,13 @@ import { progressCommand } from "./commands/progress.js";
|
|
|
15
15
|
import { startCommand } from "./commands/start.js";
|
|
16
16
|
import { statusCommand } from "./commands/status.js";
|
|
17
17
|
import { submitCommand } from "./commands/submit.js";
|
|
18
|
+
import { updateCommand } from "./commands/update.js";
|
|
18
19
|
import { waitCommand } from "./commands/wait.js";
|
|
19
20
|
import { CliError, printJson } from "./output.js";
|
|
20
|
-
const USAGE = "usage: otacon <start|submit|wait|ask|answer|progress|implement-done|status|open|config|clean|install|doctor|expose> [options]\n" +
|
|
21
|
+
const USAGE = "usage: otacon <start|submit|wait|ask|answer|progress|implement-done|status|open|config|clean|install|doctor|expose|update> [options]\n" +
|
|
21
22
|
" otacon config [open] open the Settings web UI in the browser\n" +
|
|
22
|
-
" otacon config get <key> print the merged value of one config key"
|
|
23
|
+
" otacon config get <key> print the merged value of one config key\n" +
|
|
24
|
+
" otacon update [--check] update the global install to the latest published version";
|
|
23
25
|
async function dispatch(command, argv) {
|
|
24
26
|
switch (command) {
|
|
25
27
|
case "start":
|
|
@@ -50,6 +52,8 @@ async function dispatch(command, argv) {
|
|
|
50
52
|
return doctorCommand(argv);
|
|
51
53
|
case "expose":
|
|
52
54
|
return exposeCommand(argv);
|
|
55
|
+
case "update":
|
|
56
|
+
return updateCommand(argv);
|
|
53
57
|
default:
|
|
54
58
|
throw new CliError("E_USAGE", USAGE, 2);
|
|
55
59
|
}
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AACA,+EAA+E;AAC/E,0EAA0E;AAC1E,iDAAiD;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,KAAK,GACT,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
// `otacon start`'s auto-update gate (DESIGN.md §16). The top of this file is the
|
|
2
|
+
// pure, side-effect-free decision core (Phase 1); `maybeAutoUpdate` at the
|
|
3
|
+
// bottom wires the side effects (Phase 2): the npm update and the re-exec.
|
|
4
|
+
//
|
|
5
|
+
// Decisions that shape the code:
|
|
6
|
+
// - D3: the whole check is throttled to once per hour via the
|
|
7
|
+
// `update-check.json` cache (`updateCheckDue`).
|
|
8
|
+
// - D5: latest is discovered by GET registry.npmjs.org/otacon/latest with a
|
|
9
|
+
// short timeout, fail-open on ANY error (`fetchLatest` → undefined).
|
|
10
|
+
// - D6: a source-tree run (the `.ts` daemon entry signal, `isSourceRun`) is
|
|
11
|
+
// skipped — there is no global npm package to update from a checkout.
|
|
12
|
+
// - D7: update with `npm install -g otacon@latest`; on any failure notify the
|
|
13
|
+
// manual command and proceed on the installed version — never sudo.
|
|
14
|
+
// - D8: `OTACON_UPDATED=1` guards the re-exec'd child against a second check.
|
|
15
|
+
import { spawnSync as nodeSpawnSync } from "node:child_process";
|
|
16
|
+
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
17
|
+
import { loadConfig } from "../shared/config.js";
|
|
18
|
+
import { otaconHome, updateCachePath } from "../shared/paths.js";
|
|
19
|
+
import { VERSION } from "../shared/version.js";
|
|
20
|
+
import { isSourceRun } from "./client.js";
|
|
21
|
+
import { notice } from "./output.js";
|
|
22
|
+
import { findRepoRoot, realpathOr } from "./session.js";
|
|
23
|
+
/**
|
|
24
|
+
* True iff `latest` is a strictly greater semver than `current`. Parses
|
|
25
|
+
* major.minor.patch numerically (a leading `v` and any prerelease/build suffix
|
|
26
|
+
* after patch is ignored). A malformed input on either side returns false —
|
|
27
|
+
* never throws — so a garbled registry answer can never trigger an update.
|
|
28
|
+
*/
|
|
29
|
+
export function isNewer(latest, current) {
|
|
30
|
+
const a = parseSemver(latest);
|
|
31
|
+
const b = parseSemver(current);
|
|
32
|
+
if (a === undefined || b === undefined)
|
|
33
|
+
return false;
|
|
34
|
+
for (let i = 0; i < 3; i++) {
|
|
35
|
+
const [ai, bi] = [a[i] ?? 0, b[i] ?? 0];
|
|
36
|
+
if (ai > bi)
|
|
37
|
+
return true;
|
|
38
|
+
if (ai < bi)
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
/** Parse `x.y.z` (optional leading `v`, trailing `-pre`/`+build` ignored) into a numeric triple. */
|
|
44
|
+
function parseSemver(version) {
|
|
45
|
+
if (typeof version !== "string")
|
|
46
|
+
return undefined;
|
|
47
|
+
const core = version.trim().replace(/^v/, "").split(/[-+]/, 1)[0] ?? "";
|
|
48
|
+
const parts = core.split(".");
|
|
49
|
+
if (parts.length !== 3)
|
|
50
|
+
return undefined;
|
|
51
|
+
const nums = [];
|
|
52
|
+
for (const part of parts) {
|
|
53
|
+
if (!/^\d+$/.test(part))
|
|
54
|
+
return undefined;
|
|
55
|
+
nums.push(Number(part));
|
|
56
|
+
}
|
|
57
|
+
return [nums[0] ?? 0, nums[1] ?? 0, nums[2] ?? 0];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The 1h throttle (D3): returns true when a fresh check is due — i.e. there is
|
|
61
|
+
* no valid cache, or `nowMs - cache.checkedAt >= windowMs`. A malformed or
|
|
62
|
+
* absent cache (or a non-finite `checkedAt`) counts as due, so a corrupt cache
|
|
63
|
+
* file never wedges the check off.
|
|
64
|
+
*/
|
|
65
|
+
export function updateCheckDue(cache, nowMs, windowMs = 3_600_000) {
|
|
66
|
+
if (cache === undefined || typeof cache.checkedAt !== "number" || !Number.isFinite(cache.checkedAt)) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
return nowMs - cache.checkedAt >= windowMs;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* GET registry.npmjs.org/otacon/latest and return its `.version` (D5). On ANY
|
|
73
|
+
* error — network failure, non-200, bad JSON, missing/empty version, or the
|
|
74
|
+
* timeout — resolves to `undefined` so the caller fails open and proceeds on
|
|
75
|
+
* the current version. Never throws. Defaults to a 1.5s timeout when no
|
|
76
|
+
* `signal` is supplied.
|
|
77
|
+
*/
|
|
78
|
+
export async function fetchLatest(signal) {
|
|
79
|
+
try {
|
|
80
|
+
const response = await fetch("https://registry.npmjs.org/otacon/latest", {
|
|
81
|
+
signal: signal ?? AbortSignal.timeout(1500),
|
|
82
|
+
});
|
|
83
|
+
if (!response.ok)
|
|
84
|
+
return undefined;
|
|
85
|
+
const body = (await response.json());
|
|
86
|
+
return typeof body.version === "string" && body.version.length > 0 ? body.version : undefined;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** Read+parse the throttle cache; a missing/corrupt file is `undefined` (= due). */
|
|
93
|
+
function readCache() {
|
|
94
|
+
try {
|
|
95
|
+
const parsed = JSON.parse(readFileSync(updateCachePath(), "utf8"));
|
|
96
|
+
if (typeof parsed === "object" && parsed !== null && "checkedAt" in parsed) {
|
|
97
|
+
return parsed;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// missing or malformed → treated as due by updateCheckDue(undefined, …)
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
/** Persist `checkedAt: now` BEFORE attempting the update, so a failed update still throttles. */
|
|
106
|
+
function writeCache(nowMs) {
|
|
107
|
+
try {
|
|
108
|
+
mkdirSync(otaconHome(), { recursive: true });
|
|
109
|
+
writeFileSync(updateCachePath(), `${JSON.stringify({ checkedAt: nowMs })}\n`);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// a cache we can't write just means the next start re-checks; never fatal
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Run `npm install -g otacon@latest` (D7), the one mutating side effect shared
|
|
117
|
+
* by the auto-update gate (`maybeAutoUpdate`) and the standalone `otacon update`
|
|
118
|
+
* command. stdio is inherited so npm's own progress reaches the human's stderr.
|
|
119
|
+
* Returns `{ ok }`: false on a non-zero exit (a non-writable global dir, an npm
|
|
120
|
+
* error) OR a spawn error (`ENOENT` when npm is missing) — never throws, and
|
|
121
|
+
* never escalates to sudo (D1). `latest` is accepted for symmetry/logging at the
|
|
122
|
+
* call site; the registry tag `otacon@latest` is what npm actually resolves.
|
|
123
|
+
* `spawnSync` is injectable so tests drive both outcomes with no real npm.
|
|
124
|
+
*/
|
|
125
|
+
export function runNpmUpdate(_latest, spawnSync = nodeSpawnSync) {
|
|
126
|
+
const install = spawnSync("npm", ["install", "-g", "otacon@latest"], {
|
|
127
|
+
stdio: "inherit",
|
|
128
|
+
});
|
|
129
|
+
return { ok: install.error === undefined && install.status === 0 };
|
|
130
|
+
}
|
|
131
|
+
const REAL_DEPS = {
|
|
132
|
+
fetch: fetchLatest,
|
|
133
|
+
spawnSync: nodeSpawnSync,
|
|
134
|
+
exit: (code) => process.exit(code),
|
|
135
|
+
nowMs: () => Date.now(),
|
|
136
|
+
sourceRun: isSourceRun,
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* The pre-session auto-update gate, called as the very first thing in
|
|
140
|
+
* `otacon start` (DESIGN.md §16). Guards in order — each early return means
|
|
141
|
+
* "proceed on the installed version" (the no-op path):
|
|
142
|
+
*
|
|
143
|
+
* 1. loop guard — `OTACON_UPDATED` set → the re-exec'd child, don't re-check (D8)
|
|
144
|
+
* 2. dev-run skip — a source checkout has no global package to update (D6)
|
|
145
|
+
* 3. config gate — `update.auto:false` pins the version (D4)
|
|
146
|
+
* 4. throttle — checked within the hour → skip; else stamp the cache now (D3)
|
|
147
|
+
* 5. fetch+compare— registry latest (fail-open) must be strictly newer (D5)
|
|
148
|
+
* 6. update — `npm install -g otacon@latest`; on success notice + re-exec
|
|
149
|
+
* `start <argv>` with OTACON_UPDATED=1 and exit the parent;
|
|
150
|
+
* on ANY failure notice the manual command and return (D1/D7)
|
|
151
|
+
*
|
|
152
|
+
* On the successful-update path this NEVER returns: it re-execs and exits with
|
|
153
|
+
* the child's status. The child runs the new CLI, mints the session, and (via
|
|
154
|
+
* the version handshake in ensureDaemon) restarts the stale daemon — no extra
|
|
155
|
+
* restart code (D9).
|
|
156
|
+
*/
|
|
157
|
+
export async function maybeAutoUpdate(argv, deps = REAL_DEPS) {
|
|
158
|
+
// 1. Loop guard (D8): the re-exec'd child must not check again.
|
|
159
|
+
if (process.env.OTACON_UPDATED)
|
|
160
|
+
return;
|
|
161
|
+
// 2. Dev-run skip (D6): a source checkout has no global npm package.
|
|
162
|
+
if (deps.sourceRun())
|
|
163
|
+
return;
|
|
164
|
+
// 3. Config gate (D4): honor project config the same way start.ts resolves the repo.
|
|
165
|
+
const cwd = realpathOr(process.cwd());
|
|
166
|
+
const repo = findRepoRoot(cwd) ?? cwd;
|
|
167
|
+
if (loadConfig(repo).update.auto === false)
|
|
168
|
+
return;
|
|
169
|
+
// 4. Throttle (D3): stamp the cache BEFORE attempting the update so a failed
|
|
170
|
+
// attempt still throttles the next hour (no npm hammering on a flaky network).
|
|
171
|
+
const now = deps.nowMs();
|
|
172
|
+
if (!updateCheckDue(readCache(), now))
|
|
173
|
+
return;
|
|
174
|
+
writeCache(now);
|
|
175
|
+
// 5. Fetch + compare (D5): fail-open on no answer; only act if strictly newer.
|
|
176
|
+
const latest = await deps.fetch();
|
|
177
|
+
if (latest === undefined)
|
|
178
|
+
return;
|
|
179
|
+
if (!isNewer(latest, VERSION))
|
|
180
|
+
return;
|
|
181
|
+
// 6. Update (D7): npm install -g via the shared helper; fail-open on any error.
|
|
182
|
+
if (!runNpmUpdate(latest, deps.spawnSync).ok) {
|
|
183
|
+
// ENOENT (npm missing), non-zero exit, or a non-writable global dir — never
|
|
184
|
+
// escalate to sudo (D1). Notify the manual command and proceed on current.
|
|
185
|
+
notice(`a newer otacon ${latest} is available but auto-update failed; run: npm install -g otacon@latest`);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
// Success: re-exec the same `start` invocation on the freshly-installed CLI.
|
|
189
|
+
// OTACON_UPDATED=1 trips the loop guard above; stdio is inherited so the child
|
|
190
|
+
// prints the single JSON line on stdout, preserving the start contract.
|
|
191
|
+
notice(`updated otacon ${VERSION} → ${latest}; restarting`);
|
|
192
|
+
const child = deps.spawnSync(process.execPath, [process.argv[1] ?? "", "start", ...argv], { stdio: "inherit", env: { ...process.env, OTACON_UPDATED: "1" } });
|
|
193
|
+
deps.exit(child.status ?? 0);
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/ui.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { existsSync, readFileSync } from "node:fs";
|
|
7
7
|
import { join } from "node:path";
|
|
8
8
|
import { fileURLToPath } from "node:url";
|
|
9
|
+
import { VERSION } from "../shared/version.js";
|
|
9
10
|
const HEARTBEAT_MS = 25_000;
|
|
10
11
|
/** Vite's output is flat hashed names — no slashes means no traversal. */
|
|
11
12
|
const ASSET_NAME = /^[A-Za-z0-9_.-]+$/;
|
|
@@ -157,7 +158,10 @@ export function registerUiRoutes(app, deps) {
|
|
|
157
158
|
headers: { "content-type": type, "cache-control": "public, max-age=31536000, immutable" },
|
|
158
159
|
});
|
|
159
160
|
});
|
|
160
|
-
|
|
161
|
+
// `version` rides every snapshot (DESIGN.md §6, §16): a tab built against an
|
|
162
|
+
// older daemon re-learns the live version on each (re)connect and self-heals
|
|
163
|
+
// by reloading, so an update-restarted daemon never strands a stale bundle.
|
|
164
|
+
app.get("/api/stream", (c) => sse(c, deps, () => ({ version: VERSION, sessions: deps.listSummaries() })));
|
|
161
165
|
app.get("/api/sessions/:id/stream", (c) => {
|
|
162
166
|
const id = c.req.param("id");
|
|
163
167
|
if (!deps.getSummary(id)) {
|
|
@@ -168,6 +172,7 @@ export function registerUiRoutes(app, deps) {
|
|
|
168
172
|
// against `thread`/`grill`/`activity` frames (same argument as
|
|
169
173
|
// snapshot-first itself).
|
|
170
174
|
return sse(c, deps, () => ({
|
|
175
|
+
version: VERSION,
|
|
171
176
|
session: deps.getSummary(id),
|
|
172
177
|
threads: deps.getThreads(id),
|
|
173
178
|
transcript: deps.getTranscript(id),
|
package/dist/daemon/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/daemon/ui.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,0EAA0E;AAC1E,0EAA0E;AAC1E,8EAA8E;AAC9E,sEAAsE;AAEtE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/daemon/ui.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/config.js
CHANGED
|
@@ -22,6 +22,7 @@ export const DEFAULT_CONFIG = {
|
|
|
22
22
|
notifications: { desktop: true },
|
|
23
23
|
worktree: { dir: "~/.otacon/worktrees" },
|
|
24
24
|
plans: { dir: ".otacon/plans" },
|
|
25
|
+
update: { auto: true },
|
|
25
26
|
};
|
|
26
27
|
/**
|
|
27
28
|
* One entry per leaf config key. The guard test asserts this enumerates exactly
|
|
@@ -183,6 +184,15 @@ export const CONFIG_SCHEMA = [
|
|
|
183
184
|
type: "path",
|
|
184
185
|
default: DEFAULT_CONFIG.plans.dir,
|
|
185
186
|
},
|
|
187
|
+
// update — auto-update at otacon start (DESIGN.md §16)
|
|
188
|
+
{
|
|
189
|
+
section: "update",
|
|
190
|
+
key: "auto",
|
|
191
|
+
label: "Auto-update on start",
|
|
192
|
+
description: "Self-update to the latest published version at otacon start (off pins the installed version).",
|
|
193
|
+
type: "bool",
|
|
194
|
+
default: DEFAULT_CONFIG.update.auto,
|
|
195
|
+
},
|
|
186
196
|
];
|
|
187
197
|
/**
|
|
188
198
|
* Validate one raw value against a field's type rule, shared by loadConfig's
|
|
@@ -268,6 +278,7 @@ function overlayConfig(base, raw, source) {
|
|
|
268
278
|
notifications: { ...base.notifications },
|
|
269
279
|
worktree: { ...base.worktree },
|
|
270
280
|
plans: { ...base.plans },
|
|
281
|
+
update: { ...base.update },
|
|
271
282
|
};
|
|
272
283
|
const mergedSections = merged;
|
|
273
284
|
walkProvidedFields(raw, (section, field, result) => {
|
|
@@ -288,7 +299,7 @@ function overlayConfig(base, raw, source) {
|
|
|
288
299
|
* (`<repo>/.otacon/config.local.json`, personal). Closest wins. Loaded fresh
|
|
289
300
|
* on every use so tuning takes effect immediately. Each file is overlaid field
|
|
290
301
|
* by field against CONFIG_SCHEMA (budgets, activity, notifications, worktree,
|
|
291
|
-
* plans).
|
|
302
|
+
* plans, update).
|
|
292
303
|
*/
|
|
293
304
|
export function loadConfig(repoRoot) {
|
|
294
305
|
const overlay = (source, into) => overlayConfig(into, readJsonFile(source), source);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA+EnF,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,OAAO,EAAE;QACP,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,EAAE;QACjB,WAAW,EAAE,EAAE;QACf,kBAAkB,EAAE,CAAC;QACrB,cAAc,EAAE,CAAC;QACjB,sBAAsB,EAAE,CAAC;QACzB,eAAe,EAAE,CAAC;QAClB,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,CAAC;QACjB,uBAAuB,EAAE,CAAC;QAC1B,wBAAwB,EAAE,CAAC;QAC3B,mBAAmB,EAAE,EAAE;KACxB;IACD,QAAQ,EAAE;QACR,GAAG,EAAE,EAAE;QACP,YAAY,EAAE,GAAG;KAClB;IACD,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAChC,QAAQ,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE;IACxC,KAAK,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE;IAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;CACvB,CAAC;AAmBF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,mDAAmD;IACnD;QACE,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,YAAY;QAC5C,GAAG,EAAE,CAAC;KACP;IACD;QACE,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,eAAe;QACpB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,aAAa;QAC7C,GAAG,EAAE,CAAC;KACP;IACD;QACE,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,aAAa;QAClB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,6DAA6D;QAC1E,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW;QAC3C,GAAG,EAAE,CAAC;KACP;IACD;QACE,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,oBAAoB;QACzB,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,kBAAkB;QAClD,GAAG,EAAE,CAAC;KACP;IACD;QACE,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,gBAAgB;QACrB,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,cAAc;QAC9C,GAAG,EAAE,CAAC;KACP;IACD;QACE,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,wBAAwB;QAC7B,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,4CAA4C;QACzD,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,sBAAsB;QACtD,GAAG,EAAE,CAAC;KACP;IACD;QACE,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,iBAAiB;QACtB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,yDAAyD;QACtE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,eAAe;QAC/C,GAAG,EAAE,CAAC;KACP;IACD;QACE,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,eAAe;QACpB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,aAAa;QAC7C,GAAG,EAAE,CAAC;KACP;IACD;QACE,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,gBAAgB;QACrB,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,2BAA2B;QACxC,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,cAAc;QAC9C,GAAG,EAAE,CAAC;KACP;IACD;QACE,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,yBAAyB;QAC9B,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,uBAAuB;QACvD,GAAG,EAAE,CAAC;KACP;IACD;QACE,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,0BAA0B;QAC/B,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,yEAAyE;QACtF,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,wBAAwB;QACxD,GAAG,EAAE,CAAC;KACP;IACD;QACE,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,qBAAqB;QAC1B,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,+CAA+C;QAC5D,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,mBAAmB;QACnD,GAAG,EAAE,CAAC;KACP;IACD,kDAAkD;IAClD;QACE,OAAO,EAAE,UAAU;QACnB,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG;QACpC,GAAG,EAAE,CAAC;KACP;IACD;QACE,OAAO,EAAE,UAAU;QACnB,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,yDAAyD;QACtE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,YAAY;QAC7C,GAAG,EAAE,CAAC;KACP;IACD,mDAAmD;IACnD;QACE,OAAO,EAAE,eAAe;QACxB,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,0DAA0D;QACvE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,cAAc,CAAC,aAAa,CAAC,OAAO;KAC9C;IACD,gEAAgE;IAChE;QACE,OAAO,EAAE,UAAU;QACnB,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,mGAAmG;QAChH,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG;KACrC;IACD,6EAA6E;IAC7E;QACE,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,0EAA0E;QACvF,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;KAClC;IACD,uDAAuD;IACvD;QACE,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,+FAA+F;QAC5G,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI;KACpC;CACF,CAAC;AAIF;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAkB,EAAE,GAAY;IAC/D,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YAC3E,IAAI,GAAG,IAAI,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YACrE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAClC,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,OAAO,GAAG,KAAK,SAAS;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YACnD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAClC,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YAClD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YAC/C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAyB,CAAC;AAC3D,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CACzB,GAAY,EACZ,QAA6E;IAE7E,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO;IACpD,MAAM,IAAI,GAAG,GAA8B,CAAC;IAC5C,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;YAAE,SAAS;QACtD,MAAM,UAAU,GAAG,GAA8B,CAAC;QAClD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,UAAU,CAAC;gBAAE,SAAS;YACzC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAAkB,EAAE,GAAY,EAAE,MAAc;IACrE,MAAM,MAAM,GAAiB;QAC3B,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QAC5B,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC9B,aAAa,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;QACxC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC9B,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;QACxB,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;KAC3B,CAAC;IACF,MAAM,cAAc,GAAG,MAA4D,CAAC;IACpF,kBAAkB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACjD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,2EAA2E;YAC3E,kDAAkD;YACjD,cAAc,CAAC,OAAO,CAA6B,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACjF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4BAA4B,OAAO,IAAI,KAAK,CAAC,GAAG,OAAO,MAAM,IAAI,CAClE,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,QAAiB;IAC1C,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,IAAkB,EAAgB,EAAE,CACnE,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACpD,IAAI,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,EAAE,cAAc,CAAC,CAAC;IACzD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,GAAG,GAA4C,EAAE,CAAC;IACxD,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAChE,IAAI,MAAM,CAAC,EAAE;YAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACjE,CAAC,CAAC,CAAC;IACH,OAAO,GAAkB,CAAC;AAC5B,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAI/C,MAAM,MAAM,GAA4C,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,kBAAkB,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACnD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO;gBACP,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,OAAO,EAAE,qBAAqB,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE;aACrD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,MAAqB,EAAE,MAAM,EAAE,CAAC;AACnD,CAAC"}
|
package/dist/shared/paths.js
CHANGED
|
@@ -19,6 +19,14 @@ export function daemonLogPath() {
|
|
|
19
19
|
export function globalConfigPath() {
|
|
20
20
|
return join(otaconHome(), "config.json");
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* The auto-update check cache (`<OTACON_HOME>/update-check.json`, DESIGN.md
|
|
24
|
+
* §16): records `checkedAt` so `otacon start` throttles the registry fetch to
|
|
25
|
+
* once per hour instead of paying a round-trip on every start.
|
|
26
|
+
*/
|
|
27
|
+
export function updateCachePath() {
|
|
28
|
+
return join(otaconHome(), "update-check.json");
|
|
29
|
+
}
|
|
22
30
|
/**
|
|
23
31
|
* The canonical home plan archive root (`<OTACON_HOME>/sessions`, DESIGN.md
|
|
24
32
|
* §12): every approved plan lands here keyed by its session id, regardless of
|
package/dist/shared/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/shared/paths.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/version.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Generated from package.json by scripts/gen-version.ts — do NOT hand-edit.
|
|
2
2
|
// version.test.ts guards that this equals package.json's version. Bump the
|
|
3
3
|
// version in package.json, then run `bun run gen:version` to regenerate.
|
|
4
|
-
export const VERSION = "0.1.
|
|
4
|
+
export const VERSION = "0.1.3";
|
|
5
5
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"./path-BWPyau1x.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-
|
|
1
|
+
import{n as e,t}from"./path-BWPyau1x.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-NEinnePC.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i)if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-NNHCCRGN-DlpIbxXb.js";import{x as e}from"./mermaid-parser.core-CRmtm0s9.js";export{e as createArchitectureServices};
|