pi-studio-opencode 0.1.0

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 (60) hide show
  1. package/ARCHITECTURE.md +122 -0
  2. package/LICENSE +21 -0
  3. package/README.md +108 -0
  4. package/dist/demo-host-pi.d.ts +1 -0
  5. package/dist/demo-host-pi.js +71 -0
  6. package/dist/demo-host-pi.js.map +1 -0
  7. package/dist/demo-host.d.ts +1 -0
  8. package/dist/demo-host.js +154 -0
  9. package/dist/demo-host.js.map +1 -0
  10. package/dist/host-opencode-plugin.d.ts +52 -0
  11. package/dist/host-opencode-plugin.js +396 -0
  12. package/dist/host-opencode-plugin.js.map +1 -0
  13. package/dist/host-opencode.d.ts +154 -0
  14. package/dist/host-opencode.js +627 -0
  15. package/dist/host-opencode.js.map +1 -0
  16. package/dist/host-pi.d.ts +45 -0
  17. package/dist/host-pi.js +258 -0
  18. package/dist/host-pi.js.map +1 -0
  19. package/dist/install-config.d.ts +36 -0
  20. package/dist/install-config.js +136 -0
  21. package/dist/install-config.js.map +1 -0
  22. package/dist/install.d.ts +16 -0
  23. package/dist/install.js +168 -0
  24. package/dist/install.js.map +1 -0
  25. package/dist/launcher.d.ts +2 -0
  26. package/dist/launcher.js +124 -0
  27. package/dist/launcher.js.map +1 -0
  28. package/dist/main.d.ts +1 -0
  29. package/dist/main.js +732 -0
  30. package/dist/main.js.map +1 -0
  31. package/dist/mock-pi-session.d.ts +27 -0
  32. package/dist/mock-pi-session.js +138 -0
  33. package/dist/mock-pi-session.js.map +1 -0
  34. package/dist/open-browser.d.ts +1 -0
  35. package/dist/open-browser.js +29 -0
  36. package/dist/open-browser.js.map +1 -0
  37. package/dist/opencode-plugin.d.ts +3 -0
  38. package/dist/opencode-plugin.js +326 -0
  39. package/dist/opencode-plugin.js.map +1 -0
  40. package/dist/prototype-pdf.d.ts +12 -0
  41. package/dist/prototype-pdf.js +991 -0
  42. package/dist/prototype-pdf.js.map +1 -0
  43. package/dist/prototype-server.d.ts +88 -0
  44. package/dist/prototype-server.js +1002 -0
  45. package/dist/prototype-server.js.map +1 -0
  46. package/dist/prototype-theme.d.ts +36 -0
  47. package/dist/prototype-theme.js +1471 -0
  48. package/dist/prototype-theme.js.map +1 -0
  49. package/dist/studio-core.d.ts +63 -0
  50. package/dist/studio-core.js +251 -0
  51. package/dist/studio-core.js.map +1 -0
  52. package/dist/studio-host-types.d.ts +50 -0
  53. package/dist/studio-host-types.js +14 -0
  54. package/dist/studio-host-types.js.map +1 -0
  55. package/examples/opencode/INSTALL.md +67 -0
  56. package/examples/opencode/opencode.local-path.jsonc +16 -0
  57. package/package.json +68 -0
  58. package/static/prototype.css +1277 -0
  59. package/static/prototype.html +173 -0
  60. package/static/prototype.js +3198 -0
@@ -0,0 +1,173 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>πₒ Studio · OpenCode</title>
7
+ <link rel="stylesheet" href="/static/prototype.css" />
8
+ </head>
9
+ <body>
10
+ <header>
11
+ <h1><span class="app-logo" aria-hidden="true">πₒ</span> Studio <span class="app-subtitle">Editor &amp; Response Workspace (OpenCode Edition)</span></h1>
12
+ <div class="controls">
13
+ <button id="saveAsBtn" type="button">Save editor as...</button>
14
+ <button id="saveBtn" type="button">Save editor</button>
15
+ <button id="loadFileBtn" type="button">Load file content</button>
16
+ <button id="refreshBtn" type="button">Refresh</button>
17
+ <button id="diagnosticsBtn" type="button">Diagnostics</button>
18
+ </div>
19
+ </header>
20
+
21
+ <main>
22
+ <section id="leftPane">
23
+ <div class="section-header">
24
+ <div class="section-header-main">Editor (Raw)</div>
25
+ <div class="section-header-actions">
26
+ <button id="leftFocusBtn" class="pane-focus-btn" type="button" title="Show only the editor pane. Shortcut: F10 or Cmd/Ctrl+Esc.">Focus pane</button>
27
+ </div>
28
+ </div>
29
+ <div class="source-wrap">
30
+ <div class="source-meta">
31
+ <div class="badge-row">
32
+ <span id="sourceBadge" class="source-badge">Editor origin: studio editor</span>
33
+ <button id="resourceDirBtn" type="button" class="resource-dir-btn">Set working dir</button>
34
+ <span id="resourceDirLabel" class="source-badge resource-dir-label" hidden></span>
35
+ <span id="syncBadge" class="source-badge sync-badge" hidden>In sync with response</span>
36
+ <span id="queueBadge" class="source-badge">Queue: 0</span>
37
+ </div>
38
+ <div class="source-actions">
39
+ <div class="source-actions-row">
40
+ <button id="runBtn" type="button">Run editor text</button>
41
+ <button id="queueBtn" type="button" disabled>Queue steering</button>
42
+ <button id="copyDraftBtn" type="button">Copy editor text</button>
43
+ </div>
44
+ <div class="source-actions-row">
45
+ <span id="composerStatusBadge" class="source-badge">Run state: idle</span>
46
+ <span id="backendStatusBadge" class="source-badge">Backend: -</span>
47
+ <span id="historyCountBadge" class="source-badge">History: 0/0</span>
48
+ </div>
49
+ <div class="source-actions-row">
50
+ <button id="insertHeaderBtn" type="button">Insert annotated reply header</button>
51
+ <select id="annotationModeSelect" aria-label="Annotation visibility mode">
52
+ <option value="on" selected>Annotations: On</option>
53
+ <option value="off">Annotations: Hidden</option>
54
+ </select>
55
+ <button id="stripAnnotationsBtn" type="button">Strip annotations...</button>
56
+ <button id="saveAnnotatedBtn" type="button">Save .annotated.md</button>
57
+ </div>
58
+ <div class="source-actions-row">
59
+ <select id="highlightSelect" aria-label="Editor syntax highlighting">
60
+ <option value="on" selected>Syntax highlight: On</option>
61
+ <option value="off">Syntax highlight: Off</option>
62
+ </select>
63
+ <select id="langSelect" aria-label="Highlight language"></select>
64
+ </div>
65
+ </div>
66
+ </div>
67
+ <div class="editor-highlight-wrap">
68
+ <pre id="sourceHighlight" class="editor-highlight" aria-hidden="true"></pre>
69
+ <textarea id="promptInput" spellcheck="false" placeholder="Paste or edit text here."></textarea>
70
+ </div>
71
+ </div>
72
+ </section>
73
+
74
+ <section id="rightPane">
75
+ <div class="section-header">
76
+ <div class="section-header-main">
77
+ <select id="rightViewSelect" aria-label="Response view mode">
78
+ <option value="markdown">Response (Raw)</option>
79
+ <option value="preview" selected>Response (Preview)</option>
80
+ <option value="editor-preview">Editor (Preview)</option>
81
+ </select>
82
+ </div>
83
+ <div class="section-header-actions">
84
+ <button id="rightFocusBtn" class="pane-focus-btn" type="button" title="Show only the response pane. Shortcut: F10 or Cmd/Ctrl+Esc.">Focus pane</button>
85
+ <button id="exportPdfBtn" type="button" title="Export the current right-pane preview as PDF via pandoc + xelatex.">Export right preview as PDF</button>
86
+ </div>
87
+ </div>
88
+ <div class="reference-meta">
89
+ <span id="referenceBadge" class="source-badge">Latest response: none</span>
90
+ </div>
91
+ <div id="responseView" class="panel-scroll rendered-markdown">
92
+ <pre id="responseText" class="plain-markdown">No response yet.</pre>
93
+ </div>
94
+ <div class="response-wrap">
95
+ <div class="response-actions">
96
+ <div class="response-actions-row">
97
+ <select id="followSelect" aria-label="Auto-update response">
98
+ <option value="on" selected>Auto-update response: On</option>
99
+ <option value="off">Auto-update response: Off</option>
100
+ </select>
101
+ <select id="responseHighlightSelect" aria-label="Response markdown highlighting">
102
+ <option value="off">Syntax highlight: Off</option>
103
+ <option value="on" selected>Syntax highlight: On</option>
104
+ </select>
105
+ </div>
106
+ <div class="response-actions-row history-row">
107
+ <button id="historyPrevBtn" type="button" title="Show previous response in history.">◀ Prev response</button>
108
+ <span id="historyIndexBadge" class="source-badge">History: 0/0</span>
109
+ <button id="historyNextBtn" type="button" title="Show next response in history.">Next response ▶</button>
110
+ <button id="historyLastBtn" type="button" title="Jump to the latest loaded response in history.">Last response ▶|</button>
111
+ </div>
112
+ <div class="response-actions-row">
113
+ <button id="loadResponseBtn" type="button">Load response into editor</button>
114
+ <button id="loadHistoryPromptBtn" type="button">Load response prompt into editor</button>
115
+ <button id="copyResponseBtn" type="button">Copy response text</button>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </section>
120
+ </main>
121
+
122
+ <section id="diagnosticsPanel" class="diagnostics-panel" hidden>
123
+ <div class="diagnostics-grid">
124
+ <section class="diagnostic-card">
125
+ <div class="section-header diagnostics-header">
126
+ <div class="section-header-main">Active turn</div>
127
+ </div>
128
+ <div id="activeTurnPanel" class="panel-scroll diagnostics-body empty-state">No active turn yet.</div>
129
+ </section>
130
+
131
+ <section class="diagnostic-card">
132
+ <div class="section-header diagnostics-header">
133
+ <div class="section-header-main">Last completed turn</div>
134
+ </div>
135
+ <div id="lastTurnPanel" class="panel-scroll diagnostics-body empty-state">No completed turn yet.</div>
136
+ </section>
137
+
138
+ <section class="diagnostic-card">
139
+ <div class="section-header diagnostics-header">
140
+ <div class="section-header-main">Selected response provenance</div>
141
+ </div>
142
+ <div id="selectionPanel" class="panel-scroll diagnostics-body empty-state">No response selected yet.</div>
143
+ </section>
144
+
145
+ <section class="diagnostic-card diagnostic-wide">
146
+ <div class="section-header diagnostics-header">
147
+ <div class="section-header-main">History by chain</div>
148
+ </div>
149
+ <div id="historyList" class="panel-scroll diagnostics-body history-list"></div>
150
+ </section>
151
+
152
+ <section class="diagnostic-card diagnostic-wide">
153
+ <div class="section-header diagnostics-header">
154
+ <div class="section-header-main">Recent host events</div>
155
+ <div class="section-header-actions">
156
+ <span id="logSummary" class="source-badge">0 lines</span>
157
+ </div>
158
+ </div>
159
+ <pre id="logOutput" class="log-output diagnostics-body"></pre>
160
+ </section>
161
+ </div>
162
+ </section>
163
+
164
+ <footer>
165
+ <span id="statusLine"><span id="statusSpinner" aria-hidden="true"> </span><span id="status">Connecting · Studio script starting…</span></span>
166
+ <span id="footerMeta" class="footer-meta"><span id="footerMetaText" class="footer-meta-text">History: 0/0 · Queue: 0</span></span>
167
+ <span class="shortcut-hint">Focus pane: F10 (or Cmd/Ctrl+Esc) to toggle · Cmd/Ctrl+Enter: run / queue steering · Esc: stop</span>
168
+ </footer>
169
+
170
+ <script defer src="https://cdn.jsdelivr.net/npm/dompurify@3.2.6/dist/purify.min.js"></script>
171
+ <script type="module" src="/static/prototype.js"></script>
172
+ </body>
173
+ </html>