spectater 0.0.0-stage → 0.2.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.
- package/LICENSE +21 -0
- package/README.md +113 -2
- package/bin/spectater.js +376 -0
- package/package.json +59 -4
- package/skills/spectater/SKILL.md +13 -0
- package/src/agent.js +184 -0
- package/src/changes.js +82 -0
- package/src/config.js +44 -0
- package/src/discovery.js +158 -0
- package/src/files.js +25 -0
- package/src/hooks.js +145 -0
- package/src/markdown.js +120 -0
- package/src/queue.js +29 -0
- package/src/review.js +402 -0
- package/src/server.js +291 -0
- package/src/storage.js +381 -0
- package/src/watch.js +113 -0
- package/web/app.js +705 -0
- package/web/favicon.svg +14 -0
- package/web/index.html +158 -0
- package/web/style.css +647 -0
- package/web/theme.js +45 -0
package/web/favicon.svg
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40">
|
|
2
|
+
<title>SpecTater potato</title>
|
|
3
|
+
<path
|
|
4
|
+
fill="#e3be7a"
|
|
5
|
+
stroke="#493a24"
|
|
6
|
+
stroke-width="1.5"
|
|
7
|
+
d="M12 5C5 8 8 14 5 20S7 35 17 36s16-5 16-14S28 1 19 4c-3 1-4-1-7 1Z"
|
|
8
|
+
/>
|
|
9
|
+
<g fill="none" stroke="#30291f" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
10
|
+
<circle cx="14" cy="18" r="5" />
|
|
11
|
+
<circle cx="27" cy="18" r="5" />
|
|
12
|
+
<path d="M19 18h3M5 16l4 1m23 0 3-1M17 28q5 3 9-1M11 10l4-1M15 17v2m11-2v2" />
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|
package/web/index.html
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
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
|
+
<meta name="color-scheme" content="light dark">
|
|
7
|
+
<title>SpecTater review</title>
|
|
8
|
+
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
|
|
9
|
+
<script src="/theme.js"></script>
|
|
10
|
+
<link rel="stylesheet" href="/style.css">
|
|
11
|
+
<script type="module" src="/app.js"></script>
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<header>
|
|
15
|
+
<div class="wordmark">
|
|
16
|
+
<svg class="logo" viewBox="0 0 40 40" aria-hidden="true">
|
|
17
|
+
<title>A spec-tater with opinions</title>
|
|
18
|
+
<path
|
|
19
|
+
class="spud"
|
|
20
|
+
d="M12 5C5 8 8 14 5 20S7 35 17 36s16-5 16-14S28 1 19 4c-3 1-4-1-7 1Z"
|
|
21
|
+
/>
|
|
22
|
+
<g class="logo-ink">
|
|
23
|
+
<circle cx="14" cy="18" r="5" />
|
|
24
|
+
<circle cx="27" cy="18" r="5" />
|
|
25
|
+
<path d="M19 18h3M5 16l4 1m23 0 3-1M17 28q5 3 9-1M11 10l4-1" />
|
|
26
|
+
<path d="M15 17v2m11-2v2" />
|
|
27
|
+
</g>
|
|
28
|
+
</svg><span>SpecTater</span>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="header-actions">
|
|
31
|
+
<button
|
|
32
|
+
id="theme"
|
|
33
|
+
class="icon-button"
|
|
34
|
+
type="button"
|
|
35
|
+
aria-label="Dark mode"
|
|
36
|
+
aria-pressed="false"
|
|
37
|
+
>
|
|
38
|
+
<svg class="moon-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
39
|
+
<path d="M20.5 14A8.5 8.5 0 0 1 10 3.5 8.5 8.5 0 1 0 20.5 14Z" />
|
|
40
|
+
</svg><svg class="sun-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
41
|
+
<circle cx="12" cy="12" r="4" />
|
|
42
|
+
<path
|
|
43
|
+
d="M12 2v2m0 16v2M2 12h2m16 0h2M5 5l1.5 1.5m11 11L19 19M5 19l1.5-1.5m11-11L19 5"
|
|
44
|
+
/>
|
|
45
|
+
</svg>
|
|
46
|
+
</button>
|
|
47
|
+
<button id="refresh" type="button">Refresh source</button>
|
|
48
|
+
</div>
|
|
49
|
+
</header>
|
|
50
|
+
<p id="message" role="status" aria-live="polite">Loading…</p>
|
|
51
|
+
<div class="workspace">
|
|
52
|
+
<nav aria-label="Change artifacts">
|
|
53
|
+
<h2 id="change">Artifacts</h2>
|
|
54
|
+
<div id="artifacts"></div>
|
|
55
|
+
<details class="review-details">
|
|
56
|
+
<summary>Details</summary>
|
|
57
|
+
<p id="identity"></p>
|
|
58
|
+
<p id="location"></p>
|
|
59
|
+
<p id="revision"></p>
|
|
60
|
+
<div id="artifact-statuses"></div>
|
|
61
|
+
<button id="theme-system" type="button" hidden>Use system theme</button>
|
|
62
|
+
<p>Review feedback does not grant approval.</p>
|
|
63
|
+
</details>
|
|
64
|
+
</nav>
|
|
65
|
+
<main id="main">
|
|
66
|
+
<div class="document-toolbar">
|
|
67
|
+
<h1 id="document-name">Choose an artifact</h1>
|
|
68
|
+
<fieldset aria-label="Document view">
|
|
69
|
+
<button type="button" id="rendered-mode" aria-pressed="true">Rendered</button
|
|
70
|
+
><button type="button" id="source-mode" aria-pressed="false">Source</button>
|
|
71
|
+
</fieldset>
|
|
72
|
+
</div>
|
|
73
|
+
<details id="changes">
|
|
74
|
+
<summary>What changed?</summary>
|
|
75
|
+
<p id="changes-note" class="note"></p>
|
|
76
|
+
<div id="changed-files"></div>
|
|
77
|
+
<pre id="change-diff" hidden></pre>
|
|
78
|
+
</details>
|
|
79
|
+
<article id="rendered" class="prose"></article>
|
|
80
|
+
<section id="source-view" aria-label="Markdown source" hidden>
|
|
81
|
+
<pre id="source-lines" aria-hidden="true"></pre>
|
|
82
|
+
<pre id="source" hidden></pre>
|
|
83
|
+
</section>
|
|
84
|
+
</main>
|
|
85
|
+
<aside aria-label="Review feedback">
|
|
86
|
+
<h2>Comments</h2>
|
|
87
|
+
<p id="source-status" class="note"></p>
|
|
88
|
+
<p id="listener-status" class="note"></p>
|
|
89
|
+
<p id="comment-hint" class="note">Select text to comment.</p>
|
|
90
|
+
<button id="resume-draft" type="button" hidden>Resume draft</button>
|
|
91
|
+
<div id="undo-delete" hidden>
|
|
92
|
+
<span>Comment deleted.</span><button id="undo" type="button">Undo</button>
|
|
93
|
+
</div>
|
|
94
|
+
<div id="comments"></div>
|
|
95
|
+
<details id="deleted-comments" hidden>
|
|
96
|
+
<summary>Deleted comments</summary>
|
|
97
|
+
<div id="deleted-list"></div>
|
|
98
|
+
</details>
|
|
99
|
+
<div class="submission">
|
|
100
|
+
<p id="queue-editing" class="note" hidden></p>
|
|
101
|
+
<label for="agent-message">Message to agent</label>
|
|
102
|
+
<textarea
|
|
103
|
+
id="agent-message"
|
|
104
|
+
rows="2"
|
|
105
|
+
maxlength="10000"
|
|
106
|
+
placeholder="Optional. Enter sends; Shift+Enter adds a line."
|
|
107
|
+
></textarea>
|
|
108
|
+
<div class="submit-actions">
|
|
109
|
+
<button id="submit" type="button" disabled>Submit batch</button
|
|
110
|
+
><button id="send-end" type="button">Send & End</button>
|
|
111
|
+
</div>
|
|
112
|
+
<p id="end-pending" class="note" hidden>
|
|
113
|
+
Ending after the agent receives the final batch.
|
|
114
|
+
</p>
|
|
115
|
+
<div id="receipts"></div>
|
|
116
|
+
<button id="review-lifecycle" type="button">End review</button>
|
|
117
|
+
<details id="export-details" hidden>
|
|
118
|
+
<summary>More · copy or download</summary>
|
|
119
|
+
<code id="retrieval-command"></code>
|
|
120
|
+
<label class="sr-only" for="export">Batch export</label>
|
|
121
|
+
<textarea id="export" rows="5" readonly></textarea>
|
|
122
|
+
<div class="export-actions">
|
|
123
|
+
<button id="copy" type="button">Copy export</button
|
|
124
|
+
><button id="download" type="button">Download export</button>
|
|
125
|
+
</div>
|
|
126
|
+
</details>
|
|
127
|
+
</div>
|
|
128
|
+
</aside>
|
|
129
|
+
</div>
|
|
130
|
+
<div id="comment-popover" popover role="dialog" aria-labelledby="comment-title">
|
|
131
|
+
<div class="popover-header">
|
|
132
|
+
<h2 id="comment-title">Add comment</h2>
|
|
133
|
+
<button
|
|
134
|
+
type="button"
|
|
135
|
+
class="icon-button"
|
|
136
|
+
popovertarget="comment-popover"
|
|
137
|
+
popovertargetaction="hide"
|
|
138
|
+
aria-label="Close comment"
|
|
139
|
+
>
|
|
140
|
+
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m6 6 12 12M6 18 18 6" /></svg>
|
|
141
|
+
</button>
|
|
142
|
+
</div>
|
|
143
|
+
<form id="comment-form">
|
|
144
|
+
<label class="sr-only" for="comment">Comment on selected text</label>
|
|
145
|
+
<p id="selection" class="selection">Select text to comment.</p>
|
|
146
|
+
<textarea
|
|
147
|
+
id="comment"
|
|
148
|
+
rows="3"
|
|
149
|
+
maxlength="10000"
|
|
150
|
+
required
|
|
151
|
+
placeholder="Add a comment… Enter saves; Cmd/Ctrl+Enter saves and submits."
|
|
152
|
+
></textarea>
|
|
153
|
+
<button id="save" type="submit" disabled>Save comment</button>
|
|
154
|
+
</form>
|
|
155
|
+
<p id="composer-error" class="note" role="alert" hidden></p>
|
|
156
|
+
</div>
|
|
157
|
+
</body>
|
|
158
|
+
</html>
|