@kky42/pievo-server 2.0.3 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/{LoopView-CCYqXrKq.js → LoopView-Pbp2YtUu.js} +1 -1
  3. package/.output/public/assets/{Modal-BhRzAXQg.js → Modal-B3xpEtcf.js} +1 -1
  4. package/.output/public/assets/{SignIn-CV3jqX_8.js → SignIn-9vsaKv_p.js} +1 -1
  5. package/.output/public/assets/{actionUi-BRtdWVvO.js → actionUi-DDDfD0WX.js} +1 -1
  6. package/.output/public/assets/app-CStTBRt2.css +2 -0
  7. package/.output/public/assets/{artifactView-DekEs5ME.js → artifactView-BV-yQVrj.js} +1 -1
  8. package/.output/public/assets/{index-BATGA0jG.js → index-49hAH0gP.js} +4 -4
  9. package/.output/public/assets/{invite._token-CQgv8lTC.js → invite._token-C3t4JfAY.js} +1 -1
  10. package/.output/public/assets/{invite._token-Dp2HL9X5.js → invite._token-C891oGkK.js} +1 -1
  11. package/.output/public/assets/{loopApi-5s2-kCnu.js → loopApi-C_Dtw-nL.js} +1 -1
  12. package/.output/public/assets/loops._loopId-DD4fKGMu.js +4 -0
  13. package/.output/public/assets/{loops._loopId_.runs._runId-BNN-dLrW.js → loops._loopId_.runs._runId-DoPcCQy7.js} +1 -1
  14. package/.output/public/assets/{notifyFns-DuBElaqG.js → notifyFns-BaukhLAg.js} +1 -1
  15. package/.output/public/assets/{preload-helper-3xcHsDtt.js → preload-helper--VCqDT5m.js} +2 -2
  16. package/.output/public/assets/{routes-YnrsFY5X.js → routes-BS4N7Lnf.js} +1 -1
  17. package/.output/public/assets/{routes-CmuCVIIS.js → routes-DsdcURfk.js} +1 -1
  18. package/.output/public/assets/{t._teamId-Bi-C9s5j.js → t._teamId-C9uEyAh_.js} +1 -1
  19. package/.output/public/assets/{t._teamId-BlE4mCSj.js → t._teamId-DSYlMX_v.js} +1 -1
  20. package/.output/public/assets/ui-Gb1413-F.js +1 -0
  21. package/.output/server/_ssr/{DashboardView-2eNPqWcy.mjs → DashboardView-CQdjYy03.mjs} +7 -7
  22. package/.output/server/_ssr/{LoopPlaybook-CnQ8Qgyf.mjs → LoopPlaybook-C86vJIjZ.mjs} +3 -3
  23. package/.output/server/_ssr/{LoopView-DM30OPCN.mjs → LoopView-cDyjmf1B.mjs} +7 -7
  24. package/.output/server/_ssr/{Modal-B7gBr5Pm.mjs → Modal-Bc_5TYGr.mjs} +2 -2
  25. package/.output/server/_ssr/{SignIn-CaAi4_mk.mjs → SignIn-BQQiD3Ss.mjs} +3 -3
  26. package/.output/server/_ssr/{actionUi-Be7dmMxb.mjs → actionUi-BKF6xI3d.mjs} +2 -2
  27. package/.output/server/_ssr/{adapters-CHURWoZx.mjs → adapters-N4-yQ1vK.mjs} +2 -2
  28. package/.output/server/_ssr/{artifactFiles-D6b_RP78.mjs → artifactFiles-Dl1EaUtJ.mjs} +3 -3
  29. package/.output/server/_ssr/{artifactView-CYV1r48i.mjs → artifactView-DX4P3Krh.mjs} +2 -2
  30. package/.output/server/_ssr/artifacts-DzWJrBxK.mjs +2 -0
  31. package/.output/server/_ssr/{auth-B_OxPpFr.mjs → auth-CbAfO4Ne.mjs} +9 -9
  32. package/.output/server/_ssr/{boot-BNoivm21.mjs → boot-BZ-YyUiD.mjs} +1165 -155
  33. package/.output/server/_ssr/boot-BigKgB8p.mjs +2 -0
  34. package/.output/server/_ssr/{bun-sqlite-dialect-BW9W1_Ps-B3RHdVjo.mjs → bun-sqlite-dialect-BW9W1_Ps-B67XLJZt.mjs} +2 -2
  35. package/.output/server/_ssr/{d1-sqlite-dialect-BLC8LXE6-DpVe1foU.mjs → d1-sqlite-dialect-BLC8LXE6-nff_yHzH.mjs} +2 -2
  36. package/.output/server/_ssr/db-BF8vSovA.mjs +2 -0
  37. package/.output/server/_ssr/{dist-BTx1ljg7.mjs → dist-BGjVt6NE.mjs} +2 -2
  38. package/.output/server/_ssr/{factory-TSnFcS96.mjs → factory-DNeo3vVt.mjs} +2 -2
  39. package/.output/server/_ssr/{invite._token-CDpO3cfB.mjs → invite._token-Bipap1cl.mjs} +6 -6
  40. package/.output/server/_ssr/{invite._token-CvqaKH2R.mjs → invite._token-BlbVjz-o.mjs} +2 -2
  41. package/.output/server/_ssr/{invite._token-DWOPXXLS.mjs → invite._token-z3PzCMzb.mjs} +5 -5
  42. package/.output/server/_ssr/{kysely-adapter-BWjzeCGK.mjs → kysely-adapter-C1ww7PKr.mjs} +1 -1
  43. package/.output/server/_ssr/logger-C7aewtve.mjs +2 -0
  44. package/.output/server/_ssr/{loopApi-BfMnXaKT.mjs → loopApi-7MTSs6hy.mjs} +5 -5
  45. package/.output/server/_ssr/{loopApi-Cpm8YV3U.mjs → loopApi-JzGGZZp2.mjs} +20 -20
  46. package/.output/server/_ssr/{loops._loopId-C-y4Pux_.mjs → loops._loopId-CJxQ0EG4.mjs} +4 -4
  47. package/.output/server/_ssr/{loops._loopId-DfrHw2mZ.mjs → loops._loopId-DFkyTJR3.mjs} +84 -84
  48. package/.output/server/_ssr/{loops._loopId_.runs._runId-C9d0EC2Q.mjs → loops._loopId_.runs._runId-DkG-ZCD1.mjs} +7 -7
  49. package/.output/server/_ssr/{loops._loopId_.runs._runId-BXyyqXwX.mjs → loops._loopId_.runs._runId-lTigSOmT.mjs} +4 -4
  50. package/.output/server/_ssr/{machineFns-CRbwYxD3.mjs → machineFns-Dda8-rBY.mjs} +3 -3
  51. package/.output/server/_ssr/{node-sqlite-dialect-B10G6C4W.mjs → node-sqlite-dialect-BS2OAFJh.mjs} +2 -2
  52. package/.output/server/_ssr/{notifyFns-CtmSVNmE.mjs → notifyFns-C6eyIFZE.mjs} +5 -5
  53. package/.output/server/_ssr/{notifyFns-DvH4C-GH.mjs → notifyFns-C9N0QLe3.mjs} +3 -3
  54. package/.output/server/_ssr/{router-B4ipreZ4.mjs → router-DIfoLu1r.mjs} +30 -30
  55. package/.output/server/_ssr/{routes-DKox93l0.mjs → routes-Bx0bRxt9.mjs} +2 -2
  56. package/.output/server/_ssr/{routes-iHT61OkI.mjs → routes-DYJB0rKC.mjs} +5 -5
  57. package/.output/server/_ssr/{routes-l7tUe3lr.mjs → routes-bWgX0tRE.mjs} +6 -6
  58. package/.output/server/_ssr/runDiff-B9t7ouYj.mjs +2 -0
  59. package/.output/server/_ssr/ssr.mjs +51 -51
  60. package/.output/server/_ssr/store-Dw4LiFjE.mjs +2 -0
  61. package/.output/server/_ssr/{t._teamId-BPK2mrN3.mjs → t._teamId-B_ieXBNF.mjs} +6 -6
  62. package/.output/server/_ssr/{t._teamId-jO8dUmSQ.mjs → t._teamId-C_KZZ4Xh.mjs} +5 -5
  63. package/.output/server/_ssr/{t._teamId-B3g0Cs8B.mjs → t._teamId-D9nCEa2h.mjs} +2 -2
  64. package/.output/server/_ssr/{teamFns-D4I-0dEB.mjs → teamFns-BBIbatdZ.mjs} +2 -2
  65. package/.output/server/_ssr/{teamFns-6zjFV7lM.mjs → teamFns-O3ZmtZL2.mjs} +3 -3
  66. package/.output/server/_ssr/tokens-DI_pklQB.mjs +2 -0
  67. package/.output/server/_ssr/{ui-CI-OeTr7.mjs → ui-B6mE5-5v.mjs} +6 -6
  68. package/.output/server/{_tanstack-start-manifest_v-CxHUYCv8.mjs → _tanstack-start-manifest_v-DKnfwHZr.mjs} +27 -27
  69. package/.output/server/drizzle/0015_run_history_foundation.sql +43 -0
  70. package/.output/server/drizzle/meta/_journal.json +7 -0
  71. package/.output/server/index.mjs +107 -107
  72. package/drizzle/0015_run_history_foundation.sql +43 -0
  73. package/drizzle/meta/_journal.json +7 -0
  74. package/package.json +1 -1
  75. package/.output/public/assets/app-B03JVnFn.css +0 -2
  76. package/.output/public/assets/loops._loopId-C9vRjZ8W.js +0 -4
  77. package/.output/public/assets/ui-By58RJgB.js +0 -1
  78. package/.output/server/_ssr/artifacts-CXMpBzMY.mjs +0 -2
  79. package/.output/server/_ssr/boot-C9VAWt9Z.mjs +0 -2
  80. package/.output/server/_ssr/db-C11vQNxP.mjs +0 -2
  81. package/.output/server/_ssr/logger-DE_PU5bE.mjs +0 -2
  82. package/.output/server/_ssr/runDiff-Bohd5W5R.mjs +0 -113
  83. package/.output/server/_ssr/store-Ck7kCAGf.mjs +0 -2
  84. package/.output/server/_ssr/tokens-oJm6yFyt.mjs +0 -2
@@ -0,0 +1,2 @@
1
+ import { Q as getLoop } from "./boot-BZ-YyUiD.mjs";
2
+ export { getLoop };
@@ -1,10 +1,10 @@
1
1
  import { c as createFileRoute, s as lazyRouteComponent } from "../_libs/@tanstack/react-router+[...].mjs";
2
- import { c as getAuthState, h as listTemplates, t as canViewTeam } from "./loopApi-BfMnXaKT.mjs";
3
- import { a as authClient } from "./LoopPlaybook-CnQ8Qgyf.mjs";
4
- import { n as fetchLiveData } from "./DashboardView-2eNPqWcy.mjs";
5
- //#region node_modules/.nitro/vite/services/ssr/assets/t._teamId-BPK2mrN3.js
6
- var $$splitErrorComponentImporter = () => import("./t._teamId-B3g0Cs8B.mjs");
7
- var $$splitComponentImporter = () => import("./t._teamId-jO8dUmSQ.mjs");
2
+ import { c as getAuthState, h as listTemplates, t as canViewTeam } from "./loopApi-7MTSs6hy.mjs";
3
+ import { a as authClient } from "./LoopPlaybook-C86vJIjZ.mjs";
4
+ import { n as fetchLiveData } from "./DashboardView-CQdjYy03.mjs";
5
+ //#region node_modules/.nitro/vite/services/ssr/assets/t._teamId-B_ieXBNF.js
6
+ var $$splitErrorComponentImporter = () => import("./t._teamId-D9nCEa2h.mjs");
7
+ var $$splitComponentImporter = () => import("./t._teamId-C_KZZ4Xh.mjs");
8
8
  /**
9
9
  * The explicit-team dashboard (`/t/<teamId>`, Phase 2): the same dashboard scoped
10
10
  * to the team in the PATH, so a view is bookmarkable and each browser tab keeps
@@ -1,9 +1,9 @@
1
1
  import { g as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
2
- import { s as useSession } from "./LoopPlaybook-CnQ8Qgyf.mjs";
3
- import { t as SignIn } from "./SignIn-CaAi4_mk.mjs";
4
- import { t as DashboardView } from "./DashboardView-2eNPqWcy.mjs";
5
- import { t as Route } from "./t._teamId-BPK2mrN3.mjs";
6
- //#region node_modules/.nitro/vite/services/ssr/assets/t._teamId-jO8dUmSQ.js
2
+ import { s as useSession } from "./LoopPlaybook-C86vJIjZ.mjs";
3
+ import { t as SignIn } from "./SignIn-BQQiD3Ss.mjs";
4
+ import { t as DashboardView } from "./DashboardView-CQdjYy03.mjs";
5
+ import { t as Route } from "./t._teamId-B_ieXBNF.mjs";
6
+ //#region node_modules/.nitro/vite/services/ssr/assets/t._teamId-C_KZZ4Xh.js
7
7
  var import_jsx_runtime = require_jsx_runtime();
8
8
  /**
9
9
  * The explicit-team dashboard (`/t/<teamId>`, Phase 2): the same dashboard scoped
@@ -1,7 +1,7 @@
1
1
  import { g as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
2
2
  import { f as useRouter } from "../_libs/@tanstack/react-router+[...].mjs";
3
- import { r as LoadErrorCard } from "./actionUi-Be7dmMxb.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/t._teamId-B3g0Cs8B.js
3
+ import { r as LoadErrorCard } from "./actionUi-BKF6xI3d.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/t._teamId-D9nCEa2h.js
5
5
  var import_jsx_runtime = require_jsx_runtime();
6
6
  /**
7
7
  * The explicit-team dashboard (`/t/<teamId>`, Phase 2): the same dashboard scoped
@@ -1,6 +1,6 @@
1
1
  import { n as createServerFn } from "./ssr.mjs";
2
- import { r as createSsrRpc } from "./loopApi-BfMnXaKT.mjs";
3
- //#region node_modules/.nitro/vite/services/ssr/assets/teamFns-D4I-0dEB.js
2
+ import { r as createSsrRpc } from "./loopApi-7MTSs6hy.mjs";
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/teamFns-BBIbatdZ.js
4
4
  /**
5
5
  * Team management server functions — the thin RPC surface over `teamAdmin`
6
6
  * (which holds all the rules + authorization). Every mutating fn takes an
@@ -1,9 +1,9 @@
1
- import { Bt as redeemInviteAtomic, Dt as listTeamMembers, E as createInvite$1, F as deleteTeamCascade, Ht as removeTeamMemberGuarded, I as ensureServer, Jt as setTeamMemberRoleGuarded, N as deleteInvite, O as createTeam$2, Ot as listTeamsForUser, Ut as renameTeam$2, X as getInvite, it as getTeamMember, m as addTeamMember$1, rn as userByEmail, rt as getTeam, ut as isPersonalTeam, wt as listPendingInvites, x as countLoopsForTeam } from "./boot-BNoivm21.mjs";
1
+ import { D as createInvite$1, Dt as listTeamMembers, Ht as renameTeam$2, I as deleteTeamCascade, L as ensureServer, Ot as listTeamsForUser, P as deleteInvite, S as countLoopsForTeam, Vt as removeTeamMemberGuarded, Z as getInvite, it as getTeamMember, k as createTeam$2, m as addTeamMember$1, nn as userByEmail, qt as setTeamMemberRoleGuarded, rt as getTeam, ut as isPersonalTeam, wt as listPendingInvites, zt as redeemInviteAtomic } from "./boot-BZ-YyUiD.mjs";
2
2
  import { n as createServerFn } from "./ssr.mjs";
3
- import { authEnabled, currentUserId } from "./auth-B_OxPpFr.mjs";
3
+ import { authEnabled, currentUserId } from "./auth-CbAfO4Ne.mjs";
4
4
  import { t as createServerRpc } from "./createServerRpc-BD8Xn_0_.mjs";
5
5
  import { randomUUID } from "node:crypto";
6
- //#region node_modules/.nitro/vite/services/ssr/assets/teamFns-6zjFV7lM.js
6
+ //#region node_modules/.nitro/vite/services/ssr/assets/teamFns-O3ZmtZL2.js
7
7
  /**
8
8
  * Team lifecycle + membership logic (design report §2/§4/§5, all six §7 decisions
9
9
  * approved as recommended). This module is the ONE authorization + rules
@@ -0,0 +1,2 @@
1
+ import { Bt as rememberConnectKey, Pt as mintDeviceToken } from "./boot-BZ-YyUiD.mjs";
2
+ export { mintDeviceToken, rememberConnectKey };
@@ -1,6 +1,6 @@
1
1
  import { o as __toESM } from "../_runtime.mjs";
2
2
  import { g as require_jsx_runtime, h as require_react } from "../_libs/@base-ui/react+[...].mjs";
3
- //#region node_modules/.nitro/vite/services/ssr/assets/ui-CI-OeTr7.js
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/ui-B6mE5-5v.js
4
4
  var import_react = /* @__PURE__ */ __toESM(require_react());
5
5
  var import_jsx_runtime = require_jsx_runtime();
6
6
  var fmt = (t) => t ? new Date(t).toLocaleString() : "—";
@@ -116,9 +116,9 @@ var ST = {
116
116
  c: "var(--color-run-active-exec)",
117
117
  label: "Running…"
118
118
  },
119
- "active-edit": {
120
- c: "var(--color-run-active-edit)",
121
- label: "Editing…"
119
+ "active-steer": {
120
+ c: "var(--color-run-active-steer)",
121
+ label: "Steering…"
122
122
  },
123
123
  "active-evolve": {
124
124
  c: "var(--color-run-active-evolve)",
@@ -126,8 +126,8 @@ var ST = {
126
126
  }
127
127
  };
128
128
  var statusMeta = (k) => k === "kept" || k === "no-change" || k === "blocked" ? ST[k] : void 0;
129
- var roleWord = (r) => r.role === "edit" ? "edit" : r.role === "evolve" ? "evolve" : "exec";
130
- var keptLabel = (r) => roleWord(r) === "edit" ? "Edited" : roleWord(r) === "evolve" ? "Improved" : "Kept";
129
+ var roleWord = (r) => r.role === "steer" ? "steer" : r.role === "evolve" ? "evolve" : "exec";
130
+ var keptLabel = (r) => roleWord(r) === "steer" ? "Steered" : roleWord(r) === "evolve" ? "Improved" : "Kept";
131
131
  function dotColor(r) {
132
132
  if (r.running) return ST[`active-${roleWord(r)}`].c;
133
133
  if (r.status === "blocked") return ST.blocked.c;
@@ -1,4 +1,4 @@
1
- //#region node_modules/.nitro/vite/services/ssr/assets/_tanstack-start-manifest_v-CxHUYCv8.js
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/_tanstack-start-manifest_v-DKnfwHZr.js
2
2
  var tsrStartManifest = () => ({ routes: {
3
3
  __root__: {
4
4
  filePath: "/Users/kky/dev/evo/packages/server/src/routes/__root.tsx",
@@ -25,69 +25,69 @@ var tsrStartManifest = () => ({ routes: {
25
25
  "/loops/$loopId_/runs/$runId"
26
26
  ],
27
27
  preloads: [
28
- "/assets/index-BATGA0jG.js",
28
+ "/assets/index-49hAH0gP.js",
29
29
  "/assets/jsx-runtime-BseJUIpC.js",
30
- "/assets/preload-helper-3xcHsDtt.js",
31
- "/assets/Modal-BhRzAXQg.js",
32
- "/assets/notifyFns-DuBElaqG.js",
30
+ "/assets/preload-helper--VCqDT5m.js",
31
+ "/assets/Modal-B3xpEtcf.js",
32
+ "/assets/notifyFns-BaukhLAg.js",
33
33
  "/assets/useRouter-DsjH8G0p.js",
34
- "/assets/loopApi-5s2-kCnu.js",
35
- "/assets/ui-By58RJgB.js",
34
+ "/assets/loopApi-C_Dtw-nL.js",
35
+ "/assets/ui-Gb1413-F.js",
36
36
  "/assets/lifecycleUi-C3k2MlX8.js"
37
37
  ],
38
38
  scripts: [{ attrs: {
39
39
  type: "module",
40
40
  async: !0,
41
- src: "/assets/index-BATGA0jG.js"
41
+ src: "/assets/index-49hAH0gP.js"
42
42
  } }]
43
43
  },
44
44
  "/": {
45
45
  filePath: "/Users/kky/dev/evo/packages/server/src/routes/index.tsx",
46
46
  children: void 0,
47
47
  preloads: [
48
- "/assets/routes-CmuCVIIS.js",
49
- "/assets/actionUi-BRtdWVvO.js",
50
- "/assets/routes-YnrsFY5X.js",
51
- "/assets/SignIn-CV3jqX_8.js"
48
+ "/assets/routes-BS4N7Lnf.js",
49
+ "/assets/SignIn-9vsaKv_p.js",
50
+ "/assets/routes-DsdcURfk.js",
51
+ "/assets/actionUi-DDDfD0WX.js"
52
52
  ]
53
53
  },
54
54
  "/invite/$token": {
55
55
  filePath: "/Users/kky/dev/evo/packages/server/src/routes/invite.$token.tsx",
56
56
  children: void 0,
57
57
  preloads: [
58
- "/assets/invite._token-CQgv8lTC.js",
59
- "/assets/actionUi-BRtdWVvO.js",
60
- "/assets/invite._token-Dp2HL9X5.js",
61
- "/assets/SignIn-CV3jqX_8.js"
58
+ "/assets/invite._token-C3t4JfAY.js",
59
+ "/assets/actionUi-DDDfD0WX.js",
60
+ "/assets/invite._token-C891oGkK.js",
61
+ "/assets/SignIn-9vsaKv_p.js"
62
62
  ]
63
63
  },
64
64
  "/loops/$loopId": {
65
65
  filePath: "/Users/kky/dev/evo/packages/server/src/routes/loops.$loopId.tsx",
66
66
  children: void 0,
67
67
  preloads: [
68
- "/assets/loops._loopId-C9vRjZ8W.js",
69
- "/assets/artifactView-DekEs5ME.js",
70
- "/assets/SignIn-CV3jqX_8.js",
71
- "/assets/actionUi-BRtdWVvO.js"
68
+ "/assets/loops._loopId-DD4fKGMu.js",
69
+ "/assets/artifactView-BV-yQVrj.js",
70
+ "/assets/SignIn-9vsaKv_p.js",
71
+ "/assets/actionUi-DDDfD0WX.js"
72
72
  ]
73
73
  },
74
74
  "/t/$teamId": {
75
75
  filePath: "/Users/kky/dev/evo/packages/server/src/routes/t.$teamId.tsx",
76
76
  children: void 0,
77
77
  preloads: [
78
- "/assets/t._teamId-Bi-C9s5j.js",
79
- "/assets/actionUi-BRtdWVvO.js",
80
- "/assets/t._teamId-BlE4mCSj.js",
81
- "/assets/SignIn-CV3jqX_8.js"
78
+ "/assets/t._teamId-C9uEyAh_.js",
79
+ "/assets/actionUi-DDDfD0WX.js",
80
+ "/assets/t._teamId-DSYlMX_v.js",
81
+ "/assets/SignIn-9vsaKv_p.js"
82
82
  ]
83
83
  },
84
84
  "/loops/$loopId_/runs/$runId": {
85
85
  filePath: "/Users/kky/dev/evo/packages/server/src/routes/loops.$loopId_.runs.$runId.tsx",
86
86
  children: void 0,
87
87
  preloads: [
88
- "/assets/loops._loopId_.runs._runId-BNN-dLrW.js",
89
- "/assets/SignIn-CV3jqX_8.js",
90
- "/assets/actionUi-BRtdWVvO.js"
88
+ "/assets/loops._loopId_.runs._runId-DoPcCQy7.js",
89
+ "/assets/SignIn-9vsaKv_p.js",
90
+ "/assets/actionUi-DDDfD0WX.js"
91
91
  ]
92
92
  }
93
93
  } });
@@ -0,0 +1,43 @@
1
+ -- Complete the breaking run-role rename before new runtime code reads history.
2
+ UPDATE "runs" SET "role" = 'steer' WHERE "role" = 'edit';--> statement-breakpoint
3
+ UPDATE "run_leases" SET "role" = 'steer' WHERE "role" = 'edit';--> statement-breakpoint
4
+ UPDATE "loops"
5
+ SET "pause_cause" = jsonb_set("pause_cause", '{role}', '"steer"'::jsonb)
6
+ WHERE "pause_cause"->>'role' = 'edit';--> statement-breakpoint
7
+ ALTER TABLE "loops" ADD COLUMN "last_run_index" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
8
+ ALTER TABLE "runs" ADD COLUMN "run_index" integer;--> statement-breakpoint
9
+ ALTER TABLE "runs" ADD COLUMN "model" text;--> statement-breakpoint
10
+ ALTER TABLE "runs" ADD COLUMN "reasoning_effort" text;--> statement-breakpoint
11
+ -- Terminal rows are durable history. Number them by terminal timestamp + id;
12
+ -- an in-flight row follows all terminal evidence so it keeps the next number.
13
+ WITH ranked AS (
14
+ SELECT "id", row_number() OVER (
15
+ PARTITION BY "loop_id"
16
+ ORDER BY CASE WHEN "phase" IN ('done', 'error', 'canceled') THEN 0 ELSE 1 END,
17
+ "ts", "id"
18
+ )::integer AS "run_index"
19
+ FROM "runs"
20
+ WHERE "phase" IN ('done', 'error', 'canceled', 'running')
21
+ )
22
+ UPDATE "runs" AS r
23
+ SET "run_index" = ranked."run_index"
24
+ FROM ranked
25
+ WHERE r."id" = ranked."id";--> statement-breakpoint
26
+ -- A currently running row was claimed before these snapshot columns existed.
27
+ -- Its loop settings are the closest durable execution profile; completed legacy
28
+ -- rows stay unknown rather than pretending today's config was historical config.
29
+ UPDATE "runs" AS r
30
+ SET "model" = l."model", "reasoning_effort" = l."reasoning_effort"
31
+ FROM "loops" AS l
32
+ WHERE r."loop_id" = l."id" AND r."phase" = 'running';--> statement-breakpoint
33
+ UPDATE "loops" AS l
34
+ SET "last_run_index" = history."last_run_index"
35
+ FROM (
36
+ SELECT "loop_id", max("run_index")::integer AS "last_run_index"
37
+ FROM "runs"
38
+ WHERE "run_index" IS NOT NULL
39
+ GROUP BY "loop_id"
40
+ ) AS history
41
+ WHERE l."id" = history."loop_id";--> statement-breakpoint
42
+ CREATE UNIQUE INDEX "runs_loop_run_index_idx" ON "runs" USING btree ("loop_id","run_index") WHERE "run_index" IS NOT NULL;--> statement-breakpoint
43
+ CREATE INDEX "runs_loop_terminal_history_idx" ON "runs" USING btree ("loop_id","run_index") WHERE "run_index" IS NOT NULL AND "phase" IN ('done', 'error', 'canceled');
@@ -106,6 +106,13 @@
106
106
  "when": 1784712544157,
107
107
  "tag": "0014_luxuriant_scrambler",
108
108
  "breakpoints": true
109
+ },
110
+ {
111
+ "idx": 15,
112
+ "version": "7",
113
+ "when": 1784712544158,
114
+ "tag": "0015_run_history_foundation",
115
+ "breakpoints": true
109
116
  }
110
117
  ]
111
118
  }
@@ -14,177 +14,177 @@ var public_assets_data_default = {
14
14
  "/favicon.svg": {
15
15
  "type": "image/svg+xml",
16
16
  "etag": "\"2f9-diQHMODwkdsIQ2ssl9fzDaFKaXE\"",
17
- "mtime": "2026-07-22T11:55:24.688Z",
17
+ "mtime": "2026-07-22T16:35:35.656Z",
18
18
  "size": 761,
19
19
  "path": "../public/favicon.svg"
20
20
  },
21
- "/assets/actionUi-BRtdWVvO.js": {
21
+ "/assets/SignIn-9vsaKv_p.js": {
22
22
  "type": "text/javascript; charset=utf-8",
23
- "etag": "\"8d4-+HOh7nMr0cndlHtU3I1m6HA/LfU\"",
24
- "mtime": "2026-07-22T11:55:24.186Z",
23
+ "etag": "\"56e-4jYEnfid7ZndDeDjwXhMvTwGiXA\"",
24
+ "mtime": "2026-07-22T16:35:35.141Z",
25
+ "size": 1390,
26
+ "path": "../public/assets/SignIn-9vsaKv_p.js"
27
+ },
28
+ "/assets/actionUi-DDDfD0WX.js": {
29
+ "type": "text/javascript; charset=utf-8",
30
+ "etag": "\"8d4-T51UrrIcx8jtICuIR/SW8x8B76M\"",
31
+ "mtime": "2026-07-22T16:35:35.141Z",
25
32
  "size": 2260,
26
- "path": "../public/assets/actionUi-BRtdWVvO.js"
33
+ "path": "../public/assets/actionUi-DDDfD0WX.js"
27
34
  },
28
- "/assets/SignIn-CV3jqX_8.js": {
35
+ "/assets/Modal-B3xpEtcf.js": {
29
36
  "type": "text/javascript; charset=utf-8",
30
- "etag": "\"56e-FQlTKcANALGJjEjVLbVtImF21Ag\"",
31
- "mtime": "2026-07-22T11:55:24.186Z",
32
- "size": 1390,
33
- "path": "../public/assets/SignIn-CV3jqX_8.js"
37
+ "etag": "\"f440-O5WfIh1wS+DhEmQCrpsHc32OmJU\"",
38
+ "mtime": "2026-07-22T16:35:35.141Z",
39
+ "size": 62528,
40
+ "path": "../public/assets/Modal-B3xpEtcf.js"
34
41
  },
35
- "/assets/app-B03JVnFn.css": {
42
+ "/assets/app-CStTBRt2.css": {
36
43
  "type": "text/css; charset=utf-8",
37
- "etag": "\"d9c3-zVUplAyeIofPKDeIN4DpJYdIrRg\"",
38
- "mtime": "2026-07-22T11:55:24.188Z",
39
- "size": 55747,
40
- "path": "../public/assets/app-B03JVnFn.css"
44
+ "etag": "\"d9aa-t0ON5hShc+x9qmJXwPG0/3KRXo0\"",
45
+ "mtime": "2026-07-22T16:35:35.143Z",
46
+ "size": 55722,
47
+ "path": "../public/assets/app-CStTBRt2.css"
41
48
  },
42
- "/assets/artifactView-DekEs5ME.js": {
49
+ "/assets/artifactView-BV-yQVrj.js": {
43
50
  "type": "text/javascript; charset=utf-8",
44
- "etag": "\"11ea7-M8vnVKtngk1cLoDExl+oxZpZKdg\"",
45
- "mtime": "2026-07-22T11:55:24.186Z",
51
+ "etag": "\"11ea7-M1O0tnQNjnWG4plFk22L9lEof/c\"",
52
+ "mtime": "2026-07-22T16:35:35.141Z",
46
53
  "size": 73383,
47
- "path": "../public/assets/artifactView-DekEs5ME.js"
54
+ "path": "../public/assets/artifactView-BV-yQVrj.js"
48
55
  },
49
- "/assets/invite._token-Dp2HL9X5.js": {
56
+ "/assets/invite._token-C3t4JfAY.js": {
50
57
  "type": "text/javascript; charset=utf-8",
51
- "etag": "\"65a-kzc+yHpoYeDu2PaN2ZN55NlnSFc\"",
52
- "mtime": "2026-07-22T11:55:24.186Z",
53
- "size": 1626,
54
- "path": "../public/assets/invite._token-Dp2HL9X5.js"
55
- },
56
- "/assets/invite._token-CQgv8lTC.js": {
57
- "type": "text/javascript; charset=utf-8",
58
- "etag": "\"17a-/gbIk7RHAyLFREfmpqdF7QrahIE\"",
59
- "mtime": "2026-07-22T11:55:24.186Z",
58
+ "etag": "\"17a-tpcmc7ytNGyRkPmMCJp1g7bfOVE\"",
59
+ "mtime": "2026-07-22T16:35:35.141Z",
60
60
  "size": 378,
61
- "path": "../public/assets/invite._token-CQgv8lTC.js"
61
+ "path": "../public/assets/invite._token-C3t4JfAY.js"
62
62
  },
63
- "/assets/Modal-BhRzAXQg.js": {
63
+ "/assets/LoopView-Pbp2YtUu.js": {
64
64
  "type": "text/javascript; charset=utf-8",
65
- "etag": "\"f440-ac4GjwdKzNGyaw99czfG8o9w+gY\"",
66
- "mtime": "2026-07-22T11:55:24.186Z",
67
- "size": 62528,
68
- "path": "../public/assets/Modal-BhRzAXQg.js"
69
- },
70
- "/assets/lifecycleUi-C3k2MlX8.js": {
71
- "type": "text/javascript; charset=utf-8",
72
- "etag": "\"50f-kWJ2CzUjjwKiXb/1i78rmnEKpDA\"",
73
- "mtime": "2026-07-22T11:55:24.186Z",
74
- "size": 1295,
75
- "path": "../public/assets/lifecycleUi-C3k2MlX8.js"
65
+ "etag": "\"63043-RVyp5R61D8mwTqEkn1XChynK/n8\"",
66
+ "mtime": "2026-07-22T16:35:35.139Z",
67
+ "size": 405571,
68
+ "path": "../public/assets/LoopView-Pbp2YtUu.js"
76
69
  },
77
70
  "/assets/jsx-runtime-BseJUIpC.js": {
78
71
  "type": "text/javascript; charset=utf-8",
79
72
  "etag": "\"21db-Zc8kSR08Ehf1UdEHwfS1+Mhso7E\"",
80
- "mtime": "2026-07-22T11:55:24.186Z",
73
+ "mtime": "2026-07-22T16:35:35.142Z",
81
74
  "size": 8667,
82
75
  "path": "../public/assets/jsx-runtime-BseJUIpC.js"
83
76
  },
84
- "/assets/loopApi-5s2-kCnu.js": {
77
+ "/assets/invite._token-C891oGkK.js": {
85
78
  "type": "text/javascript; charset=utf-8",
86
- "etag": "\"abb6-KWN+E6PxmR4Pvc5kPukIO41BE9I\"",
87
- "mtime": "2026-07-22T11:55:24.187Z",
88
- "size": 43958,
89
- "path": "../public/assets/loopApi-5s2-kCnu.js"
79
+ "etag": "\"65a-Qi4QrjSFBaMCBxaNpwfnzjMPhnM\"",
80
+ "mtime": "2026-07-22T16:35:35.141Z",
81
+ "size": 1626,
82
+ "path": "../public/assets/invite._token-C891oGkK.js"
90
83
  },
91
- "/assets/index-BATGA0jG.js": {
84
+ "/assets/lifecycleUi-C3k2MlX8.js": {
92
85
  "type": "text/javascript; charset=utf-8",
93
- "etag": "\"49ae2-6uV3CTaTItL7nTvRNbsXpIOIuAE\"",
94
- "mtime": "2026-07-22T11:55:24.185Z",
95
- "size": 301794,
96
- "path": "../public/assets/index-BATGA0jG.js"
86
+ "etag": "\"50f-kWJ2CzUjjwKiXb/1i78rmnEKpDA\"",
87
+ "mtime": "2026-07-22T16:35:35.142Z",
88
+ "size": 1295,
89
+ "path": "../public/assets/lifecycleUi-C3k2MlX8.js"
90
+ },
91
+ "/assets/loops._loopId-DD4fKGMu.js": {
92
+ "type": "text/javascript; charset=utf-8",
93
+ "etag": "\"81fa-tRfySLcT36KGp0p59BjBUO0Nuyc\"",
94
+ "mtime": "2026-07-22T16:35:35.142Z",
95
+ "size": 33274,
96
+ "path": "../public/assets/loops._loopId-DD4fKGMu.js"
97
97
  },
98
- "/assets/loops._loopId-C9vRjZ8W.js": {
98
+ "/assets/loopApi-C_Dtw-nL.js": {
99
99
  "type": "text/javascript; charset=utf-8",
100
- "etag": "\"81ef-n5Ovz9/NrLKxAKqrGM4b7pf/CJs\"",
101
- "mtime": "2026-07-22T11:55:24.187Z",
102
- "size": 33263,
103
- "path": "../public/assets/loops._loopId-C9vRjZ8W.js"
100
+ "etag": "\"abb6-9KPrkejlYudnh9/pm8jTfOn0daA\"",
101
+ "mtime": "2026-07-22T16:35:35.142Z",
102
+ "size": 43958,
103
+ "path": "../public/assets/loopApi-C_Dtw-nL.js"
104
104
  },
105
- "/assets/loops._loopId_.runs._runId-BNN-dLrW.js": {
105
+ "/assets/loops._loopId_.runs._runId-DoPcCQy7.js": {
106
106
  "type": "text/javascript; charset=utf-8",
107
- "etag": "\"34c0-6b6UDz7kCWCOR6p+v4CSyoNSjIo\"",
108
- "mtime": "2026-07-22T11:55:24.187Z",
107
+ "etag": "\"34c0-ZXKEClM2fKV5zE/Hae+z6iZMd6g\"",
108
+ "mtime": "2026-07-22T16:35:35.142Z",
109
109
  "size": 13504,
110
- "path": "../public/assets/loops._loopId_.runs._runId-BNN-dLrW.js"
110
+ "path": "../public/assets/loops._loopId_.runs._runId-DoPcCQy7.js"
111
111
  },
112
- "/assets/LoopView-CCYqXrKq.js": {
112
+ "/assets/routes-BS4N7Lnf.js": {
113
113
  "type": "text/javascript; charset=utf-8",
114
- "etag": "\"63043-r+tmCg2oLjb4yM1jXoZg58rbXto\"",
115
- "mtime": "2026-07-22T11:55:24.186Z",
116
- "size": 405571,
117
- "path": "../public/assets/LoopView-CCYqXrKq.js"
114
+ "etag": "\"17b-cfX8diTwD8sQyk4ghnMGkPz1PQw\"",
115
+ "mtime": "2026-07-22T16:35:35.143Z",
116
+ "size": 379,
117
+ "path": "../public/assets/routes-BS4N7Lnf.js"
118
118
  },
119
- "/assets/routes-CmuCVIIS.js": {
119
+ "/assets/notifyFns-BaukhLAg.js": {
120
120
  "type": "text/javascript; charset=utf-8",
121
- "etag": "\"17c-fnWx4nvBXYjOLCyORcgwep3TuRg\"",
122
- "mtime": "2026-07-22T11:55:24.187Z",
123
- "size": 380,
124
- "path": "../public/assets/routes-CmuCVIIS.js"
121
+ "etag": "\"fbdc-+m0E3+y/CnFzlvchZqNM/25EmCE\"",
122
+ "mtime": "2026-07-22T16:35:35.143Z",
123
+ "size": 64476,
124
+ "path": "../public/assets/notifyFns-BaukhLAg.js"
125
125
  },
126
- "/assets/t._teamId-Bi-C9s5j.js": {
126
+ "/assets/t._teamId-C9uEyAh_.js": {
127
127
  "type": "text/javascript; charset=utf-8",
128
- "etag": "\"178-C1QEFq4SQ4Y7Bktr/eMP15vqXpY\"",
129
- "mtime": "2026-07-22T11:55:24.188Z",
128
+ "etag": "\"178-7H9QBAqObhxeBvui9OTtPY0mnSU\"",
129
+ "mtime": "2026-07-22T16:35:35.143Z",
130
130
  "size": 376,
131
- "path": "../public/assets/t._teamId-Bi-C9s5j.js"
131
+ "path": "../public/assets/t._teamId-C9uEyAh_.js"
132
132
  },
133
- "/assets/routes-YnrsFY5X.js": {
133
+ "/assets/routes-DsdcURfk.js": {
134
134
  "type": "text/javascript; charset=utf-8",
135
- "etag": "\"17b-XnyKoFjqAR0GqO3dy/ZRK8ZyAPE\"",
136
- "mtime": "2026-07-22T11:55:24.187Z",
137
- "size": 379,
138
- "path": "../public/assets/routes-YnrsFY5X.js"
135
+ "etag": "\"17c-fwC8gu6Xl/9dCUZKhEPkPadFJmc\"",
136
+ "mtime": "2026-07-22T16:35:35.143Z",
137
+ "size": 380,
138
+ "path": "../public/assets/routes-DsdcURfk.js"
139
139
  },
140
- "/assets/t._teamId-BlE4mCSj.js": {
140
+ "/assets/t._teamId-DSYlMX_v.js": {
141
141
  "type": "text/javascript; charset=utf-8",
142
- "etag": "\"194-8I21tAprzqyyw39HGyhW4F3mt+I\"",
143
- "mtime": "2026-07-22T11:55:24.188Z",
142
+ "etag": "\"194-UbYEkxRdy/igBSRzweeVfb+EZq0\"",
143
+ "mtime": "2026-07-22T16:35:35.143Z",
144
144
  "size": 404,
145
- "path": "../public/assets/t._teamId-BlE4mCSj.js"
145
+ "path": "../public/assets/t._teamId-DSYlMX_v.js"
146
146
  },
147
- "/assets/ui-By58RJgB.js": {
147
+ "/assets/preload-helper--VCqDT5m.js": {
148
148
  "type": "text/javascript; charset=utf-8",
149
- "etag": "\"1afc-PU/8vhOGLDgSefNSkoO3pfjE/oU\"",
150
- "mtime": "2026-07-22T11:55:24.188Z",
151
- "size": 6908,
152
- "path": "../public/assets/ui-By58RJgB.js"
149
+ "etag": "\"14bb4-FAg2bQc2ZEhFKoiDCSsPnCEJ9pY\"",
150
+ "mtime": "2026-07-22T16:35:35.143Z",
151
+ "size": 84916,
152
+ "path": "../public/assets/preload-helper--VCqDT5m.js"
153
+ },
154
+ "/assets/ui-Gb1413-F.js": {
155
+ "type": "text/javascript; charset=utf-8",
156
+ "etag": "\"1b03-Yp1X1lb+G7it59MkrzqgP3+2aCM\"",
157
+ "mtime": "2026-07-22T16:35:35.143Z",
158
+ "size": 6915,
159
+ "path": "../public/assets/ui-Gb1413-F.js"
153
160
  },
154
161
  "/assets/useRouter-DsjH8G0p.js": {
155
162
  "type": "text/javascript; charset=utf-8",
156
163
  "etag": "\"97-bwshbj7pN2rnQJllfZOPZLnOIos\"",
157
- "mtime": "2026-07-22T11:55:24.188Z",
164
+ "mtime": "2026-07-22T16:35:35.143Z",
158
165
  "size": 151,
159
166
  "path": "../public/assets/useRouter-DsjH8G0p.js"
160
167
  },
161
- "/assets/notifyFns-DuBElaqG.js": {
162
- "type": "text/javascript; charset=utf-8",
163
- "etag": "\"fbdc-WJajCz0HryV3sQK0zi65Y0CL6mA\"",
164
- "mtime": "2026-07-22T11:55:24.187Z",
165
- "size": 64476,
166
- "path": "../public/assets/notifyFns-DuBElaqG.js"
167
- },
168
168
  "/fonts/GeistPixel-Square.woff2": {
169
169
  "type": "font/woff2",
170
170
  "etag": "\"6f7c-IQXyklzDeInO8O/YtOs5/0tckOE\"",
171
- "mtime": "2026-07-22T11:55:24.688Z",
171
+ "mtime": "2026-07-22T16:35:35.657Z",
172
172
  "size": 28540,
173
173
  "path": "../public/fonts/GeistPixel-Square.woff2"
174
174
  },
175
+ "/assets/index-49hAH0gP.js": {
176
+ "type": "text/javascript; charset=utf-8",
177
+ "etag": "\"49ae2-7OKcjK5FMB4xxtvC/FnH4UNLEO4\"",
178
+ "mtime": "2026-07-22T16:35:35.139Z",
179
+ "size": 301794,
180
+ "path": "../public/assets/index-49hAH0gP.js"
181
+ },
175
182
  "/assets/CodeField-dOzyFQNH.js": {
176
183
  "type": "text/javascript; charset=utf-8",
177
184
  "etag": "\"8c119-K1dNstx4oT3G0gi1kwFhBau674k\"",
178
- "mtime": "2026-07-22T11:55:24.185Z",
185
+ "mtime": "2026-07-22T16:35:35.139Z",
179
186
  "size": 573721,
180
187
  "path": "../public/assets/CodeField-dOzyFQNH.js"
181
- },
182
- "/assets/preload-helper-3xcHsDtt.js": {
183
- "type": "text/javascript; charset=utf-8",
184
- "etag": "\"14b7c-M/KX7EZp3LjBf3kYrAnYj6kmEpc\"",
185
- "mtime": "2026-07-22T11:55:24.187Z",
186
- "size": 84860,
187
- "path": "../public/assets/preload-helper-3xcHsDtt.js"
188
188
  }
189
189
  };
190
190
  //#endregion
@@ -0,0 +1,43 @@
1
+ -- Complete the breaking run-role rename before new runtime code reads history.
2
+ UPDATE "runs" SET "role" = 'steer' WHERE "role" = 'edit';--> statement-breakpoint
3
+ UPDATE "run_leases" SET "role" = 'steer' WHERE "role" = 'edit';--> statement-breakpoint
4
+ UPDATE "loops"
5
+ SET "pause_cause" = jsonb_set("pause_cause", '{role}', '"steer"'::jsonb)
6
+ WHERE "pause_cause"->>'role' = 'edit';--> statement-breakpoint
7
+ ALTER TABLE "loops" ADD COLUMN "last_run_index" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
8
+ ALTER TABLE "runs" ADD COLUMN "run_index" integer;--> statement-breakpoint
9
+ ALTER TABLE "runs" ADD COLUMN "model" text;--> statement-breakpoint
10
+ ALTER TABLE "runs" ADD COLUMN "reasoning_effort" text;--> statement-breakpoint
11
+ -- Terminal rows are durable history. Number them by terminal timestamp + id;
12
+ -- an in-flight row follows all terminal evidence so it keeps the next number.
13
+ WITH ranked AS (
14
+ SELECT "id", row_number() OVER (
15
+ PARTITION BY "loop_id"
16
+ ORDER BY CASE WHEN "phase" IN ('done', 'error', 'canceled') THEN 0 ELSE 1 END,
17
+ "ts", "id"
18
+ )::integer AS "run_index"
19
+ FROM "runs"
20
+ WHERE "phase" IN ('done', 'error', 'canceled', 'running')
21
+ )
22
+ UPDATE "runs" AS r
23
+ SET "run_index" = ranked."run_index"
24
+ FROM ranked
25
+ WHERE r."id" = ranked."id";--> statement-breakpoint
26
+ -- A currently running row was claimed before these snapshot columns existed.
27
+ -- Its loop settings are the closest durable execution profile; completed legacy
28
+ -- rows stay unknown rather than pretending today's config was historical config.
29
+ UPDATE "runs" AS r
30
+ SET "model" = l."model", "reasoning_effort" = l."reasoning_effort"
31
+ FROM "loops" AS l
32
+ WHERE r."loop_id" = l."id" AND r."phase" = 'running';--> statement-breakpoint
33
+ UPDATE "loops" AS l
34
+ SET "last_run_index" = history."last_run_index"
35
+ FROM (
36
+ SELECT "loop_id", max("run_index")::integer AS "last_run_index"
37
+ FROM "runs"
38
+ WHERE "run_index" IS NOT NULL
39
+ GROUP BY "loop_id"
40
+ ) AS history
41
+ WHERE l."id" = history."loop_id";--> statement-breakpoint
42
+ CREATE UNIQUE INDEX "runs_loop_run_index_idx" ON "runs" USING btree ("loop_id","run_index") WHERE "run_index" IS NOT NULL;--> statement-breakpoint
43
+ CREATE INDEX "runs_loop_terminal_history_idx" ON "runs" USING btree ("loop_id","run_index") WHERE "run_index" IS NOT NULL AND "phase" IN ('done', 'error', 'canceled');
@@ -106,6 +106,13 @@
106
106
  "when": 1784712544157,
107
107
  "tag": "0014_luxuriant_scrambler",
108
108
  "breakpoints": true
109
+ },
110
+ {
111
+ "idx": 15,
112
+ "version": "7",
113
+ "when": 1784712544158,
114
+ "tag": "0015_run_history_foundation",
115
+ "breakpoints": true
109
116
  }
110
117
  ]
111
118
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kky42/pievo-server",
3
- "version": "2.0.3",
3
+ "version": "2.0.4",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",