@tomismeta/paperclip-aperture 0.4.2 → 0.4.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.
- package/README.md +11 -5
- package/dist/manifest.js +1 -80
- package/dist/ui/index.js +1 -1851
- package/dist/worker.js +11 -18842
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -84,6 +84,8 @@ and agents attention now? actually sees to th
|
|
|
84
84
|
- a sidebar entry, page, and dashboard widget
|
|
85
85
|
- worker-side host read caching for issue/comment/document/agent reconciliation, with fresh summary/export reads when you need the latest host truth
|
|
86
86
|
- bounded per-company Core sessions with health reporting so the worker does not grow without limit during normal multi-company use
|
|
87
|
+
- replayable operator signal entries and overlay-response ledger entries so Focus actions remain auditable even when a frame came from the display adapter rather than Core
|
|
88
|
+
- decision-owner metadata on reconciled/display frames so exports can distinguish Core judgment, Paperclip reconciliation, approval overlays, and final display promotion
|
|
87
89
|
- a corpus-backed `issue-intelligence` regression check in CI so heuristic edits stay inspectable
|
|
88
90
|
- rollback-safe local mutations that restore the last durable attention state if persistence fails
|
|
89
91
|
- versioned persisted attention envelopes with an explicit migration path for older schemas
|
|
@@ -92,7 +94,7 @@ and agents attention now? actually sees to th
|
|
|
92
94
|
|
|
93
95
|
Focus is meant to be more legible than a smart inbox.
|
|
94
96
|
|
|
95
|
-
The current `0.
|
|
97
|
+
The current `0.4.x` explainability slice keeps reasoning attached to the cards you are already acting on:
|
|
96
98
|
|
|
97
99
|
- `Why now` on the active card explains why the current item outranks the rest of the queue
|
|
98
100
|
- `Why next` on queued rows explains why something is staged behind the current top item
|
|
@@ -118,14 +120,15 @@ For `0.4.x`, the boundary works like this:
|
|
|
118
120
|
- the final Focus view is therefore Core-backed but not Core-only today: the plugin still owns some Paperclip-specific candidate and lane policy where the host has facts Core cannot infer by itself
|
|
119
121
|
- Paperclip remains the system of record for issue and approval writes
|
|
120
122
|
- approval transport now goes through a worker-side Paperclip adapter using the plugin SDK HTTP client, so the browser UI no longer talks to host approval APIs directly
|
|
121
|
-
- the plugin
|
|
123
|
+
- the plugin preserves Paperclip source facts as `SourceEvent`s where the Core contract supports them, while still exporting the normalized `ApertureEvent` used for replay/debug
|
|
122
124
|
- that semantic layer includes reusable intent detectors, actor resolution against real company agents, downstream blocker extraction, explicit rule ids for matched issue heuristics, and shared operator-language generation inside the plugin
|
|
125
|
+
- typed Paperclip issue blocker relations are preserved as Focus context/provenance/metadata so Aperture has better dependency facts without the plugin inventing dependency routing
|
|
123
126
|
- `activity.logged` document events invalidate stale reconciled state so document-backed review blockers refresh promptly without a full browser-side merge layer
|
|
124
127
|
- Focus exports the live Core snapshot, the reconciled/plugin-composed display snapshot, and bounded Core traces so replay/debug flows can inspect both the engine substrate and the final operator view
|
|
125
128
|
|
|
126
|
-
The plugin has been validated against [`@tomismeta/aperture-core@0.
|
|
129
|
+
The plugin has been validated against [`@tomismeta/aperture-core@0.7.0`](https://www.npmjs.com/package/@tomismeta/aperture-core) and [`@paperclipai/plugin-sdk@2026.428.0`](https://www.npmjs.com/package/@paperclipai/plugin-sdk).
|
|
127
130
|
|
|
128
|
-
|
|
131
|
+
Approval overlay transport is opt-in until the Paperclip plugin SDK exposes a first-class approval client. Set the plugin config field `paperclipApiBase` when the worker can reach the host approval API; leave it empty to run Focus without approval overlays in hosted or restricted-network environments.
|
|
129
132
|
|
|
130
133
|
## Development
|
|
131
134
|
|
|
@@ -158,12 +161,14 @@ npx paperclipai plugin uninstall tomismeta.paperclip-aperture --force
|
|
|
158
161
|
npx paperclipai plugin install --local .
|
|
159
162
|
```
|
|
160
163
|
|
|
164
|
+
If you want to smoke test approval overlays locally, set the plugin config field `paperclipApiBase` to `http://127.0.0.1:3100` before creating approval fixtures. Without that config, Focus intentionally skips approval API reads and stays quiet.
|
|
165
|
+
|
|
161
166
|
Then open `http://127.0.0.1:3100/APE/aperture` and verify:
|
|
162
167
|
|
|
163
168
|
- `Acknowledge` hides the active card and survives refresh
|
|
164
169
|
- `Next` promotes into `Now`
|
|
165
170
|
- issue comments post successfully from Focus
|
|
166
|
-
- approval actions update Focus correctly
|
|
171
|
+
- approval actions update Focus correctly when `paperclipApiBase` is configured
|
|
167
172
|
- resolved blocker comments downgrade stale `Now` items
|
|
168
173
|
- attached issue documents downgrade stale `share the memo/spec` review blockers into monitor-only follow-up
|
|
169
174
|
- the active card exposes `Why now`
|
|
@@ -174,6 +179,7 @@ Then open `http://127.0.0.1:3100/APE/aperture` and verify:
|
|
|
174
179
|
- Plugin on npm: [`@tomismeta/paperclip-aperture`](https://www.npmjs.com/package/@tomismeta/paperclip-aperture)
|
|
175
180
|
- Roadmap and releasing: [docs/ROADMAP.md](./docs/ROADMAP.md)
|
|
176
181
|
- Architecture remediation note: [docs/AUDIT-REMEDIATION-2026-04.md](./docs/AUDIT-REMEDIATION-2026-04.md)
|
|
182
|
+
- May 2026 audit remediation note: [docs/AUDIT-REMEDIATION-2026-05.md](./docs/AUDIT-REMEDIATION-2026-05.md)
|
|
177
183
|
- Contribution guide: [CONTRIBUTING.md](./CONTRIBUTING.md)
|
|
178
184
|
- Aperture GitHub repo: [tomismeta/aperture](https://github.com/tomismeta/aperture)
|
|
179
185
|
- Aperture Core on npm: [`@tomismeta/aperture-core`](https://www.npmjs.com/package/@tomismeta/aperture-core)
|
package/dist/manifest.js
CHANGED
|
@@ -1,80 +1 @@
|
|
|
1
|
-
const
|
|
2
|
-
id: "tomismeta.paperclip-aperture",
|
|
3
|
-
apiVersion: 1,
|
|
4
|
-
version: "0.4.2",
|
|
5
|
-
displayName: "Paperclip Aperture",
|
|
6
|
-
description: "The live attention layer for Paperclip, combining Aperture Core continuity with Paperclip-native operator policy.",
|
|
7
|
-
author: "@tomismeta",
|
|
8
|
-
categories: ["automation", "ui"],
|
|
9
|
-
capabilities: [
|
|
10
|
-
"events.subscribe",
|
|
11
|
-
"http.outbound",
|
|
12
|
-
"agents.read",
|
|
13
|
-
"issues.read",
|
|
14
|
-
"issue.comments.read",
|
|
15
|
-
"issue.comments.create",
|
|
16
|
-
"issue.documents.read",
|
|
17
|
-
"activity.log.write",
|
|
18
|
-
"plugin.state.read",
|
|
19
|
-
"plugin.state.write",
|
|
20
|
-
"telemetry.track",
|
|
21
|
-
"ui.dashboardWidget.register",
|
|
22
|
-
"ui.page.register",
|
|
23
|
-
"ui.sidebar.register"
|
|
24
|
-
],
|
|
25
|
-
entrypoints: {
|
|
26
|
-
worker: "./dist/worker.js",
|
|
27
|
-
ui: "./dist/ui"
|
|
28
|
-
},
|
|
29
|
-
instanceConfigSchema: {
|
|
30
|
-
type: "object",
|
|
31
|
-
properties: {
|
|
32
|
-
captureIssueLifecycle: {
|
|
33
|
-
type: "boolean",
|
|
34
|
-
title: "Capture Issue Lifecycle",
|
|
35
|
-
default: true,
|
|
36
|
-
description: "Turn issue creation and update events into Aperture status signals."
|
|
37
|
-
},
|
|
38
|
-
captureRunFailures: {
|
|
39
|
-
type: "boolean",
|
|
40
|
-
title: "Capture Run Failures",
|
|
41
|
-
default: true,
|
|
42
|
-
description: "Turn failed agent runs into high-salience attention events."
|
|
43
|
-
},
|
|
44
|
-
paperclipApiBase: {
|
|
45
|
-
type: "string",
|
|
46
|
-
title: "Paperclip API Base",
|
|
47
|
-
default: "http://127.0.0.1:3100",
|
|
48
|
-
description: "Base URL the worker should use for Paperclip approval reads and writes when the plugin SDK lacks a first-class approval client."
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
ui: {
|
|
53
|
-
slots: [
|
|
54
|
-
{
|
|
55
|
-
type: "page",
|
|
56
|
-
id: "attention-page",
|
|
57
|
-
displayName: "Focus",
|
|
58
|
-
exportName: "AttentionPage",
|
|
59
|
-
routePath: "aperture"
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
type: "sidebar",
|
|
63
|
-
id: "attention-sidebar-link",
|
|
64
|
-
displayName: "Focus",
|
|
65
|
-
exportName: "AttentionSidebarLink"
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
type: "dashboardWidget",
|
|
69
|
-
id: "attention-widget",
|
|
70
|
-
displayName: "Focus",
|
|
71
|
-
exportName: "DashboardWidget"
|
|
72
|
-
}
|
|
73
|
-
]
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
var manifest_default = manifest;
|
|
77
|
-
export {
|
|
78
|
-
manifest_default as default
|
|
79
|
-
};
|
|
80
|
-
//# sourceMappingURL=manifest.js.map
|
|
1
|
+
const e={id:"tomismeta.paperclip-aperture",apiVersion:1,version:"0.4.4",displayName:"Paperclip Aperture",description:"The live attention layer for Paperclip, combining Aperture Core continuity with Paperclip-native operator policy.",author:"@tomismeta",categories:["automation","ui"],capabilities:["events.subscribe","http.outbound","agents.read","issues.read","issue.relations.read","issue.comments.read","issue.comments.create","issue.documents.read","activity.log.write","plugin.state.read","plugin.state.write","telemetry.track","ui.dashboardWidget.register","ui.page.register","ui.sidebar.register"],entrypoints:{worker:"./dist/worker.js",ui:"./dist/ui"},instanceConfigSchema:{type:"object",properties:{captureIssueLifecycle:{type:"boolean",title:"Capture Issue Lifecycle",default:!0,description:"Turn issue creation and update events into Aperture status signals."},captureRunFailures:{type:"boolean",title:"Capture Run Failures",default:!0,description:"Turn failed agent runs into high-salience attention events."},paperclipApiBase:{type:"string",title:"Paperclip API Base",default:"",description:"Optional base URL for Paperclip approval reads and writes. Leave empty to disable approval API fetches when the plugin SDK lacks a first-class approval client."}}},ui:{slots:[{type:"page",id:"attention-page",displayName:"Focus",exportName:"AttentionPage",routePath:"aperture"},{type:"sidebar",id:"attention-sidebar-link",displayName:"Focus",exportName:"AttentionSidebarLink"},{type:"dashboardWidget",id:"attention-widget",displayName:"Focus",exportName:"DashboardWidget"}]}};var t=e;export{t as default};
|