create-pmos 0.4.0 → 0.6.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/README.md +149 -4
- package/bin/create-pmos.js +97 -8
- package/package.json +7 -3
- package/payload/AGENTS-HUMAN.md +6 -0
- package/payload/AGENTS.md +62 -3
- package/payload/KIT-VERSION +2 -2
- package/payload/README.md +16 -2
- package/payload/SECURITY.md +59 -0
- package/payload/okf/core/concepts/design-loop.md +6 -3
- package/payload/okf/core/concepts/frontmatter-format.md +75 -0
- package/payload/okf/core/concepts/index.md +3 -0
- package/payload/okf/core/concepts/log.md +13 -0
- package/payload/okf/core/templates/design-brief-template.md +1 -1
- package/payload/okf/core/templates/eval-rubric-template.md +12 -10
- package/payload/okf/core/templates/prd-template.md +6 -0
- package/payload/okf/core/templates/prototype-brief-template.md +45 -21
- package/payload/planning/evals/agent-run-eval-rubric.md +10 -7
- package/payload/scripts/frontier.sh +60 -0
- package/payload/scripts/metrics.py +163 -102
- package/payload/scripts/pmos-log.sh +16 -6
- package/payload/skills/SKILL-FORMAT.md +72 -9
- package/payload/skills/discovery.skill +4 -0
- package/payload/skills/eval-rubric.skill +1 -1
- package/payload/skills/evaluator.skill +65 -20
- package/payload/skills/explain-run.skill +9 -6
- package/payload/skills/explain-surface.skill +156 -0
- package/payload/skills/ingest-repo.skill +4 -3
- package/payload/skills/pmos-router.skill +25 -3
- package/payload/skills/prd.skill +8 -0
- package/payload/skills/prototype.skill +106 -41
- package/payload/skills-native/copywriting/SKILL.md +57 -0
- package/payload/skills-native/discovery/SKILL.md +75 -0
- package/payload/skills-native/eval-rubric/SKILL.md +159 -0
- package/payload/skills-native/evaluator/SKILL.md +182 -0
- package/payload/skills-native/explain-run/SKILL.md +121 -0
- package/payload/skills-native/explain-surface/SKILL.md +158 -0
- package/payload/skills-native/ingest-repo/SKILL.md +120 -0
- package/payload/skills-native/okr/SKILL.md +70 -0
- package/payload/skills-native/pmos-router/SKILL.md +81 -0
- package/payload/skills-native/prd/SKILL.md +117 -0
- package/payload/skills-native/prototype/SKILL.md +147 -0
- package/payload/state/tickets/.gitkeep +0 -0
- package/payload/templates/agent-run-eval-rubric.md +10 -7
- package/payload/templates/ticket-template.md +20 -0
- package/workspace/README.md +112 -0
- package/workspace/REMOTE.md +131 -0
- package/workspace/bin/pmos.js +206 -0
- package/workspace/doctor.js +99 -0
- package/workspace/lib/console-state.js +117 -0
- package/workspace/lib/file-mode-parse.js +58 -0
- package/workspace/lib/harness-parse.js +222 -0
- package/workspace/lib/preview-kind.js +98 -0
- package/workspace/lib/rate-limit.js +26 -0
- package/workspace/lib/remote-access.js +235 -0
- package/workspace/lib/review-gate.js +39 -0
- package/workspace/lib/schedule-logic.js +132 -0
- package/workspace/lib/skill-store.js +143 -0
- package/workspace/lib/surface-contract.js +79 -0
- package/workspace/lib/transcript-read.js +247 -0
- package/workspace/package-lock.json +94 -0
- package/workspace/package.json +23 -0
- package/workspace/public/app.js +1710 -0
- package/workspace/public/index.html +175 -0
- package/workspace/public/styles.css +766 -0
- package/workspace/server.js +1753 -0
- package/workspace/skills/backlog-triage.skill +13 -0
- package/workspace/skills/weekly-report.skill +19 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en" data-theme="dark">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
|
6
|
+
<title>PMOS Terminal Workspace</title>
|
|
7
|
+
<link rel="stylesheet" href="/vendor/xterm.css" />
|
|
8
|
+
<link rel="stylesheet" href="/styles.css" />
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div class="app">
|
|
12
|
+
|
|
13
|
+
<header class="bar">
|
|
14
|
+
<span class="mark">P</span><b>PMOS</b><span class="sub">workspace</span>
|
|
15
|
+
<span class="conn" id="conn">connecting…</span>
|
|
16
|
+
<div class="right">
|
|
17
|
+
<button class="ibtn" id="railBtn" title="Hide/show the library rail" aria-pressed="false">rail</button>
|
|
18
|
+
<button class="ibtn" id="themeBtn" title="Toggle theme">theme</button>
|
|
19
|
+
</div>
|
|
20
|
+
</header>
|
|
21
|
+
|
|
22
|
+
<!-- Three columns: the workspace (repos over running agents) · the terminal · the library rail
|
|
23
|
+
(library over the document reader). Each rail pane folds away; the rail itself hides. -->
|
|
24
|
+
<div class="body" id="bodyGrid">
|
|
25
|
+
|
|
26
|
+
<nav class="side" aria-label="Workspaces and running agents">
|
|
27
|
+
<section class="pane" id="paneWs">
|
|
28
|
+
<div class="cap">workspaces <button class="mini" id="addWsBtn" aria-expanded="false" title="Add a repository">+</button></div>
|
|
29
|
+
<div class="pane-body">
|
|
30
|
+
<div id="workspaces"></div>
|
|
31
|
+
<form class="miniform" id="addWsForm" hidden>
|
|
32
|
+
<button type="button" class="pick" id="pickFolderBtn">📁 Choose folder…</button>
|
|
33
|
+
<label class="lbl" for="addWsPath">or type a path</label>
|
|
34
|
+
<input id="addWsPath" type="text" placeholder="/path/to/another/repo" aria-label="Path to a repository" autocomplete="off" spellcheck="false" />
|
|
35
|
+
<div class="row">
|
|
36
|
+
<button type="submit" class="go">add</button>
|
|
37
|
+
<button type="button" class="quiet" id="addWsCancel">cancel</button>
|
|
38
|
+
</div>
|
|
39
|
+
<p class="hint">or just run <code>pmos</code> inside that repo</p>
|
|
40
|
+
</form>
|
|
41
|
+
</div>
|
|
42
|
+
</section>
|
|
43
|
+
|
|
44
|
+
<section class="pane" id="paneSess">
|
|
45
|
+
<div class="cap">running agents · <span id="sessCount"></span> <span class="ct" id="needCount"></span></div>
|
|
46
|
+
<div class="pane-body">
|
|
47
|
+
<button class="newsess" id="newBtn" aria-expanded="false"><i>+</i> new session — run an agent here</button>
|
|
48
|
+
<form class="miniform" id="newForm" hidden>
|
|
49
|
+
<label class="lbl" for="newName">name this session</label>
|
|
50
|
+
<input id="newName" type="text" placeholder="e.g. jira-sync build" aria-label="Session name" autocomplete="off" spellcheck="false" />
|
|
51
|
+
<div class="seg" role="radiogroup" aria-label="Agent to run" id="newAgents">
|
|
52
|
+
<button type="button" data-agent="shell" role="radio" aria-checked="true">shell</button>
|
|
53
|
+
<button type="button" data-agent="claude" role="radio" aria-checked="false">claude</button>
|
|
54
|
+
<button type="button" data-agent="codex" role="radio" aria-checked="false">codex</button>
|
|
55
|
+
</div>
|
|
56
|
+
<div class="row">
|
|
57
|
+
<button type="submit" class="go">start session</button>
|
|
58
|
+
<button type="button" class="quiet" id="newCancel">cancel</button>
|
|
59
|
+
</div>
|
|
60
|
+
</form>
|
|
61
|
+
<div id="sessions"></div>
|
|
62
|
+
</div>
|
|
63
|
+
</section>
|
|
64
|
+
</nav>
|
|
65
|
+
|
|
66
|
+
<main class="term-col" aria-label="Sessions and terminal">
|
|
67
|
+
<div class="stabs" role="tablist" aria-label="Open sessions" id="stabs"></div>
|
|
68
|
+
<div class="termhost" id="termhost">
|
|
69
|
+
<!-- INSIDE termhost (position:relative): the overlay covers only the terminal area,
|
|
70
|
+
never the sidebar/tabs/needs — those must stay usable while a session is exited. -->
|
|
71
|
+
<div class="exited-overlay" id="exited">
|
|
72
|
+
<div class="card">
|
|
73
|
+
<p id="exitedMsg">This session has exited.</p>
|
|
74
|
+
<div class="row">
|
|
75
|
+
<button id="respawnBtn">↻ respawn</button>
|
|
76
|
+
<button id="removeBtn" class="quiet">✕ remove session</button>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
<div class="empty-overlay" id="noSess">
|
|
81
|
+
<div class="card">
|
|
82
|
+
<p>No sessions in <b id="noSessWs">this workspace</b> yet.</p>
|
|
83
|
+
<p class="reason">+ new session runs an agent here — it starts in this repo's root.</p>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
<div class="needs" id="needs" role="status" style="display:none"></div>
|
|
88
|
+
</main>
|
|
89
|
+
|
|
90
|
+
<aside class="rail" id="rail" aria-label="Library and document">
|
|
91
|
+
<div class="railgrip" id="railGrip" role="separator" aria-label="Resize the rail" tabindex="0"></div>
|
|
92
|
+
<section class="pane lib-pane" id="paneLib">
|
|
93
|
+
<div class="cap">
|
|
94
|
+
<button class="fold" id="libFold" aria-expanded="true" title="Hide the library"><span class="chev" aria-hidden="true">▾</span>library</button>
|
|
95
|
+
<span class="lens" role="tablist" aria-label="Library view">
|
|
96
|
+
<button role="tab" data-lens="initiatives" aria-selected="true">initiatives</button>
|
|
97
|
+
<button role="tab" data-lens="folders" aria-selected="false">folders</button>
|
|
98
|
+
<button role="tab" data-lens="scheduled" aria-selected="false">scheduled</button>
|
|
99
|
+
<button role="tab" data-lens="history" aria-selected="false">history</button>
|
|
100
|
+
</span>
|
|
101
|
+
<button class="mini librefresh" id="libRefresh" title="Rescan the repository for new files & folders" aria-label="Refresh the library">↻</button>
|
|
102
|
+
</div>
|
|
103
|
+
<div class="pane-body">
|
|
104
|
+
<input class="libfind" id="libFind" type="search" placeholder="filter the library…" aria-label="Filter the library" autocomplete="off" />
|
|
105
|
+
<div id="library"></div>
|
|
106
|
+
</div>
|
|
107
|
+
</section>
|
|
108
|
+
|
|
109
|
+
<div class="railsplit" id="railSplit" role="separator" aria-label="Resize the library and document panes" tabindex="0" hidden></div>
|
|
110
|
+
|
|
111
|
+
<section class="pane doc-pane" id="paneDoc" hidden>
|
|
112
|
+
<div class="cap">
|
|
113
|
+
<button class="fold" id="docFold" aria-expanded="true" title="Hide the document"><span class="chev" aria-hidden="true">▾</span>document</button>
|
|
114
|
+
<span class="crumb" id="crumb"></span>
|
|
115
|
+
<button class="x" id="closeDoc" aria-label="Close document">✕</button>
|
|
116
|
+
</div>
|
|
117
|
+
<div class="pane-body doc-body" id="docBody" tabindex="0"></div>
|
|
118
|
+
</section>
|
|
119
|
+
</aside>
|
|
120
|
+
</div>
|
|
121
|
+
|
|
122
|
+
<!-- ⌘K jump palette (client-side; no backend) -->
|
|
123
|
+
<div class="palette" id="palette" role="dialog" aria-modal="true" aria-label="Jump" style="display:none">
|
|
124
|
+
<div class="palette-box">
|
|
125
|
+
<input id="palInput" type="text" placeholder="Summon a view (initiatives, roadmap, okr, report) or jump to a session, initiative, document…" aria-label="Summon a view or jump to a workspace, session, initiative or document" autocomplete="off" />
|
|
126
|
+
<div class="palette-list" id="palList" role="listbox"></div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
<!-- in-app folder browser — the stand-in when the machine has no native chooser -->
|
|
131
|
+
<div class="palette" id="fsPicker" role="dialog" aria-modal="true" aria-label="Choose a repository" style="display:none">
|
|
132
|
+
<div class="palette-box">
|
|
133
|
+
<div class="fs-head">
|
|
134
|
+
<button class="fs-up" id="fsUp" aria-label="Parent folder">↑</button>
|
|
135
|
+
<span class="fs-crumb" id="fsCrumb"></span>
|
|
136
|
+
<button class="fs-use" id="fsUse">use this folder</button>
|
|
137
|
+
<button class="x" id="fsClose" aria-label="Cancel">✕</button>
|
|
138
|
+
</div>
|
|
139
|
+
<div class="palette-list" id="fsList" role="listbox"></div>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
|
|
143
|
+
<!-- Mobile only (≤760px): a terminal control-key accessory bar (phones lack these keys) over a
|
|
144
|
+
pane switcher. Hidden on desktop via CSS; the switcher swaps the single visible column. -->
|
|
145
|
+
<div class="mobmenu" id="mobMenu" data-view="terminal">
|
|
146
|
+
<div class="ctrlbar" id="ctrlBar" role="toolbar" aria-label="Terminal control keys">
|
|
147
|
+
<button type="button" data-seq="esc" aria-label="Escape"><span class="lbl">esc</span></button>
|
|
148
|
+
<button type="button" data-seq="tab" aria-label="Tab"><span class="lbl">tab</span></button>
|
|
149
|
+
<button type="button" id="ctrlKey" aria-pressed="false" aria-label="Control modifier (one-shot)"><span class="lbl">ctrl</span></button>
|
|
150
|
+
<button type="button" data-seq="left" aria-label="Left arrow">←</button>
|
|
151
|
+
<button type="button" data-seq="up" aria-label="Up arrow">↑</button>
|
|
152
|
+
<button type="button" data-seq="down" aria-label="Down arrow">↓</button>
|
|
153
|
+
<button type="button" data-seq="right" aria-label="Right arrow">→</button>
|
|
154
|
+
<button type="button" id="mobPalette" aria-label="Open the jump palette (⌘K)">⌘K</button>
|
|
155
|
+
</div>
|
|
156
|
+
<nav class="mobtabs" role="tablist" aria-label="Switch pane">
|
|
157
|
+
<button type="button" role="tab" data-mview="sessions" aria-selected="false">sessions</button>
|
|
158
|
+
<button type="button" role="tab" data-mview="terminal" aria-selected="true">terminal</button>
|
|
159
|
+
<button type="button" role="tab" data-mview="library" aria-selected="false">library</button>
|
|
160
|
+
</nav>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
<footer class="strip">
|
|
164
|
+
<span id="wsFoot">local · persistent server</span>
|
|
165
|
+
<span class="right">sessions survive detach · ⌘K jump · F2 renames · Esc closes doc</span>
|
|
166
|
+
</footer>
|
|
167
|
+
</div>
|
|
168
|
+
|
|
169
|
+
<script src="/vendor/xterm.js"></script>
|
|
170
|
+
<script src="/vendor/addon-fit.js"></script>
|
|
171
|
+
<script src="/vendor/addon-web-links.js"></script>
|
|
172
|
+
<script src="/lib/preview-kind.js"></script>
|
|
173
|
+
<script src="/app.js"></script>
|
|
174
|
+
</body>
|
|
175
|
+
</html>
|