oficina-opencode 3.0.5 → 3.1.1

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 (145) hide show
  1. package/README.md +240 -208
  2. package/commands/oficina.md +7 -6
  3. package/dashboard/.dom-check.html +1257 -0
  4. package/dashboard/README-DASHBOARD.md +64 -0
  5. package/dashboard/assets/factory.css +1543 -0
  6. package/dashboard/assets/tokens.css +208 -0
  7. package/dashboard/build-kanban-data.mjs +279 -0
  8. package/dashboard/dashboard.css +753 -0
  9. package/dashboard/dashboard.html +121 -0
  10. package/dashboard/dashboard.js +610 -0
  11. package/dashboard/data/snapshot.json +883 -0
  12. package/dashboard/debate.html +134 -0
  13. package/dashboard/factory/build-snapshot.mjs +89 -0
  14. package/dashboard/factory/factory-app.js +1185 -0
  15. package/dashboard/factory/factory-core.js +541 -0
  16. package/dashboard/factory/snapshot.js +850 -0
  17. package/dashboard/factory.html +350 -0
  18. package/dashboard/kanban-data.json +671 -0
  19. package/dashboard/kanban-source.js +643 -0
  20. package/dashboard/kanban.check.mjs +454 -0
  21. package/dashboard/kanban.html +1257 -0
  22. package/dashboard/leadership.html +1008 -0
  23. package/dashboard/lib/debate-app.js +1149 -0
  24. package/dashboard/lib/debate-core.js +698 -0
  25. package/dashboard/lib/debate-data.js +163 -0
  26. package/dashboard/lib/debate-demo.js +110 -0
  27. package/dashboard/lib/debate.css +1155 -0
  28. package/dashboard/lib/leadership-model.js +946 -0
  29. package/dashboard/probe.mjs +35 -0
  30. package/dashboard/scripts/serve.mjs +122 -0
  31. package/dashboard/scripts/snapshot-data.mjs +93 -0
  32. package/dashboard/scripts/snapshot.mjs +28 -0
  33. package/dashboard/server.mjs +242 -0
  34. package/dashboard/shot.mjs +54 -0
  35. package/dashboard/shots/desktop-gates.png +0 -0
  36. package/dashboard/shots/desktop-light.png +0 -0
  37. package/dashboard/shots/desktop-real.png +0 -0
  38. package/dashboard/shots/mobile.png +0 -0
  39. package/dashboard/test/factory-core.test.mjs +244 -0
  40. package/dashboard/tests/debate-core.test.mjs +336 -0
  41. package/dashboard/tests/leadership-model.test.mjs +404 -0
  42. package/dist/cli.js +148 -26
  43. package/dist/cli.js.map +1 -1
  44. package/dist/core/bus.js +3 -3
  45. package/dist/core/bus.js.map +1 -1
  46. package/dist/core/catalog.d.ts +9 -1
  47. package/dist/core/catalog.d.ts.map +1 -1
  48. package/dist/core/catalog.js +77 -2
  49. package/dist/core/catalog.js.map +1 -1
  50. package/dist/core/dashboard.d.ts +33 -0
  51. package/dist/core/dashboard.d.ts.map +1 -0
  52. package/dist/core/dashboard.js +115 -0
  53. package/dist/core/dashboard.js.map +1 -0
  54. package/dist/core/dispatch.d.ts +1 -1
  55. package/dist/core/dispatch.d.ts.map +1 -1
  56. package/dist/core/dispatch.js +84 -12
  57. package/dist/core/dispatch.js.map +1 -1
  58. package/dist/core/docsync.d.ts +0 -9
  59. package/dist/core/docsync.d.ts.map +1 -1
  60. package/dist/core/docsync.js +12 -15
  61. package/dist/core/docsync.js.map +1 -1
  62. package/dist/core/environment.d.ts +28 -0
  63. package/dist/core/environment.d.ts.map +1 -0
  64. package/dist/core/environment.js +80 -0
  65. package/dist/core/environment.js.map +1 -0
  66. package/dist/core/factory.d.ts +16 -0
  67. package/dist/core/factory.d.ts.map +1 -1
  68. package/dist/core/factory.js +143 -0
  69. package/dist/core/factory.js.map +1 -1
  70. package/dist/core/fsx.d.ts +20 -2
  71. package/dist/core/fsx.d.ts.map +1 -1
  72. package/dist/core/fsx.js +10 -6
  73. package/dist/core/fsx.js.map +1 -1
  74. package/dist/core/gates.d.ts +23 -1
  75. package/dist/core/gates.d.ts.map +1 -1
  76. package/dist/core/gates.js +83 -8
  77. package/dist/core/gates.js.map +1 -1
  78. package/dist/core/leases.d.ts.map +1 -1
  79. package/dist/core/leases.js +4 -1
  80. package/dist/core/leases.js.map +1 -1
  81. package/dist/core/mesa.d.ts +1 -6
  82. package/dist/core/mesa.d.ts.map +1 -1
  83. package/dist/core/mesa.js +1 -6
  84. package/dist/core/mesa.js.map +1 -1
  85. package/dist/core/office.d.ts +3 -29
  86. package/dist/core/office.d.ts.map +1 -1
  87. package/dist/core/office.js +77 -90
  88. package/dist/core/office.js.map +1 -1
  89. package/dist/core/paths.d.ts.map +1 -1
  90. package/dist/core/paths.js +6 -1
  91. package/dist/core/paths.js.map +1 -1
  92. package/dist/core/retry.d.ts +2 -8
  93. package/dist/core/retry.d.ts.map +1 -1
  94. package/dist/core/retry.js +3 -34
  95. package/dist/core/retry.js.map +1 -1
  96. package/dist/core/roster.js +3 -3
  97. package/dist/core/roster.js.map +1 -1
  98. package/dist/core/sandbox.d.ts +38 -1
  99. package/dist/core/sandbox.d.ts.map +1 -1
  100. package/dist/core/sandbox.js +119 -15
  101. package/dist/core/sandbox.js.map +1 -1
  102. package/dist/core/state.d.ts +2 -2
  103. package/dist/core/state.d.ts.map +1 -1
  104. package/dist/core/state.js +5 -33
  105. package/dist/core/state.js.map +1 -1
  106. package/dist/core/stores.d.ts +3 -13
  107. package/dist/core/stores.d.ts.map +1 -1
  108. package/dist/core/stores.js +8 -32
  109. package/dist/core/stores.js.map +1 -1
  110. package/dist/core/systemPrompt.d.ts.map +1 -1
  111. package/dist/core/systemPrompt.js +4 -1
  112. package/dist/core/systemPrompt.js.map +1 -1
  113. package/dist/core/tripwire.d.ts +22 -8
  114. package/dist/core/tripwire.d.ts.map +1 -1
  115. package/dist/core/tripwire.js +71 -26
  116. package/dist/core/tripwire.js.map +1 -1
  117. package/dist/core/types.d.ts +6 -14
  118. package/dist/core/types.d.ts.map +1 -1
  119. package/dist/core/types.js +11 -3
  120. package/dist/core/types.js.map +1 -1
  121. package/dist/hooks/scopeGuard.d.ts +15 -1
  122. package/dist/hooks/scopeGuard.d.ts.map +1 -1
  123. package/dist/hooks/scopeGuard.js +88 -73
  124. package/dist/hooks/scopeGuard.js.map +1 -1
  125. package/dist/tools/index.d.ts +9 -1
  126. package/dist/tools/index.d.ts.map +1 -1
  127. package/dist/tools/index.js +29 -81
  128. package/dist/tools/index.js.bak +972 -0
  129. package/dist/tools/index.js.map +1 -1
  130. package/dist/v1.d.ts.map +1 -1
  131. package/dist/v1.js +30 -36
  132. package/dist/v1.js.map +1 -1
  133. package/dist/v2.d.ts +5 -0
  134. package/dist/v2.d.ts.map +1 -1
  135. package/dist/v2.js +79 -46
  136. package/dist/v2.js.bak +517 -0
  137. package/dist/v2.js.map +1 -1
  138. package/docs/GARANTIAS.md +2 -2
  139. package/docs/PRUEBA-E2E.md +4 -4
  140. package/docs/QUE-ES.md +4 -5
  141. package/docs/SEGURIDAD-REPO.md +83 -0
  142. package/docs/assets/banner.svg +42 -0
  143. package/docs/catalog-facts.json +3 -3
  144. package/docs/superpowers/specs/2026-10-29-factory-skill-creator-and-remove-budget.md +182 -0
  145. package/package.json +14 -6
@@ -0,0 +1,121 @@
1
+ <!DOCTYPE html>
2
+ <html lang="es" data-theme="dark">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Oficina &#183; Sala de Operaciones</title>
7
+ <meta name="description" content="Dashboard visual en tiempo real de la Oficina de Agents: mesa, bus de mensajes, kanban de cards y gates de calidad.">
8
+ <meta name="color-scheme" content="dark light">
9
+ <meta name="theme-color" content="#0a0c10" media="(prefers-color-scheme: dark)">
10
+ <meta name="theme-color" content="#f4f1ea" media="(prefers-color-scheme: light)">
11
+ <link rel="preconnect" href="https://fonts.googleapis.com">
12
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
13
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Archivo:wght@600;700;800&family=JetBrains+Mono:wght@400;600&display=swap">
14
+ <link rel="stylesheet" href="dashboard.css">
15
+ </head>
16
+ <body>
17
+ <a class="skip-link" href="#main-content">Saltar al contenido</a>
18
+ <div class="app">
19
+
20
+ <!-- ================= HEADER ================= -->
21
+ <header class="topbar">
22
+ <div class="brand">
23
+ <h1>Oficina</h1>
24
+ <span class="run-id" id="run-id">sin corrida</span>
25
+ </div>
26
+ <span class="conn" id="conn" data-state="offline" role="status" aria-live="polite">
27
+ <span class="dot" aria-hidden="true"></span>
28
+ <span id="conn-label">Conectando&#8230;</span>
29
+ </span>
30
+ <div class="spacer"></div>
31
+ <button class="btn" id="btn-replay" aria-pressed="false" title="Reproducir la sesi&oacute;n paso a paso (R)">Replay</button>
32
+ <button class="btn" id="btn-theme" title="Cambiar tema (T)">Tema</button>
33
+ </header>
34
+
35
+ <div class="demo-banner" id="demo-banner" hidden>
36
+ Modo demo: no hay corrida activa en <code>.oficina/</code>. Los datos que ves son simulados.
37
+ </div>
38
+
39
+ <!-- ================= METRICAS ================= -->
40
+ <section class="metrics" aria-label="M&eacute;tricas de la corrida">
41
+ <div class="metric"><b id="m-cards">0</b><span>cards</span></div>
42
+ <div class="metric"><b id="m-active">0</b><span>trabajando</span></div>
43
+ <div class="metric"><b id="m-free">0</b><span>libres</span></div>
44
+ <div class="metric"><b id="m-msgs">0</b><span>mensajes bus</span></div>
45
+ <div class="metric" data-hot="true"><b id="m-blocked">0</b><span>bloqueadas</span></div>
46
+ <div class="metric"><b id="m-done">0</b><span>done</span></div>
47
+ </section>
48
+
49
+ <!-- ================= MAIN ================= -->
50
+ <main class="main" id="main-content">
51
+
52
+ <!-- IZQUIERDA: mesa + gates -->
53
+ <section class="panel" aria-labelledby="h-mesa">
54
+ <header>
55
+ <h2 id="h-mesa">Mesa</h2>
56
+ <span class="count" id="mesa-count"></span>
57
+ </header>
58
+ <div class="panel-body">
59
+ <div class="mesa-wrap">
60
+ <svg id="mesa-svg" viewBox="0 0 360 360" role="img" aria-label="Mesa de la oficina: agentes y su estado"></svg>
61
+ </div>
62
+ <div class="mesa-legend">
63
+ <span><i style="background:var(--accent)"></i>trabajando</span>
64
+ <span><i style="background:var(--ok)"></i>libres</span>
65
+ <span><i style="background:var(--err)"></i>sin heartbeat</span>
66
+ <span><i style="background:var(--card-escalated)"></i>card sin owner</span>
67
+ </div>
68
+ <div class="gates-panel" id="gates" aria-label="Gates de calidad">
69
+ <div class="gates-links">
70
+ <a href="#" id="link-evidence" hidden>evidence.md</a>
71
+ <a href="#" id="link-handoff" hidden>handoff.md</a>
72
+ </div>
73
+ </div>
74
+ </div>
75
+ </section>
76
+
77
+ <!-- CENTRO: bus -->
78
+ <section class="panel" aria-labelledby="h-bus">
79
+ <header>
80
+ <h2 id="h-bus">Bus de mensajes</h2>
81
+ <span class="count" id="bus-count"></span>
82
+ </header>
83
+ <div class="panel-body">
84
+ <div class="bus-stream" id="bus-stream" role="log" aria-live="polite"></div>
85
+ </div>
86
+ </section>
87
+
88
+ <!-- DERECHA: jefe -->
89
+ <section class="panel panel-right" aria-labelledby="h-chief">
90
+ <header>
91
+ <h2 id="h-chief">Decisiones del jefe</h2>
92
+ <span class="count" id="chief-count"></span>
93
+ </header>
94
+ <div class="panel-body">
95
+ <div class="chief-feed" id="chief-feed" aria-live="polite"></div>
96
+ </div>
97
+ </section>
98
+
99
+ </main>
100
+
101
+ <!-- ================= KANBAN ================= -->
102
+ <section class="board-section" aria-labelledby="h-board">
103
+ <h2 id="h-board" class="board-title">Cards</h2>
104
+ <div class="board" id="board"></div>
105
+ </section>
106
+
107
+ <!-- ================= REPLAY ================= -->
108
+ <footer class="replay" id="replay" hidden>
109
+ <button class="btn" id="btn-play" aria-label="Reproducir replay" aria-pressed="false">
110
+ <svg width="10" height="10" viewBox="0 0 10 10" aria-hidden="true"><path d="M2 1l7 4-7 4z" fill="currentColor"/></svg>
111
+ </button>
112
+ <input type="range" id="replay-range" min="0" max="0" value="0" aria-label="Posici&oacute;n de replay">
113
+ <span class="clock" id="replay-clock">00:00:00</span>
114
+ </footer>
115
+
116
+ <div class="toasts" id="toasts" aria-live="polite"></div>
117
+ </div>
118
+
119
+ <script type="module" src="dashboard.js"></script>
120
+ </body>
121
+ </html>