@tomismeta/paperclip-aperture 0.4.1 → 0.4.2
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 +31 -12
- package/dist/manifest.js +9 -2
- package/dist/ui/index.js +1102 -1327
- package/dist/worker.js +4463 -2626
- package/package.json +11 -10
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Paperclip Aperture
|
|
4
4
|
|
|
5
|
-
**The live attention layer for Paperclip,
|
|
5
|
+
**The live attention layer for Paperclip, combining Aperture Core continuity with Paperclip-native operator policy.**
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/@tomismeta/paperclip-aperture)
|
|
8
8
|
[](https://github.com/tomismeta/aperture)
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<p></p>
|
|
14
14
|
</div>
|
|
15
15
|
|
|
16
|
-
Paperclip Aperture adds a Focus surface to Paperclip that
|
|
16
|
+
Paperclip Aperture adds a Focus surface to Paperclip that turns approvals, issue activity, and other human-facing signals into `now`, `next`, and `ambient`.
|
|
17
17
|
|
|
18
18
|
It is designed as a live attention layer, not an inbox clone:
|
|
19
19
|
|
|
@@ -66,16 +66,27 @@ and agents attention now? actually sees to th
|
|
|
66
66
|
- a Focus surface inside Paperclip
|
|
67
67
|
- ranked `now`, `next`, and `ambient` attention lanes
|
|
68
68
|
- embedded explainability in the Focus UI, including `Why now`, `Why next`, confidence, signals, thread context, and related activity
|
|
69
|
+
- bounded focus hold while the operator is actively working the current `now` item, so `Show context` and inline commenting do not immediately lose the thread beneath them
|
|
69
70
|
- approval handling, including budget-specific approval semantics
|
|
70
71
|
- issue-aware operator language such as `review required`, `blocked`, and targeted recommended moves
|
|
71
72
|
- agent-aware routing that distinguishes known company agents from human/operator roles when issue text references them
|
|
72
|
-
- a plugin-local
|
|
73
|
+
- a plugin-local semantic mapping and policy layer that interprets Paperclip issue, approval, and agent signals before composing the final Focus view
|
|
73
74
|
- richer semantic continuity hints on mapped issue events, including `supersedes` and `resolves` relationships where Paperclip-specific intent is clear
|
|
74
75
|
- document-aware review interpretation for memo/spec-backed issues so Focus can tell the difference between `review is blocked on the artifact` and `the artifact is attached, monitor instead`
|
|
75
76
|
- dynamic re-stacking so items can move between `now`, `next`, and `ambient` as new evidence arrives
|
|
76
77
|
- inline issue commenting from the Focus surface when a Paperclip issue supports written response
|
|
77
78
|
- durable acknowledge/suppression behavior backed by plugin state and ledger replay
|
|
79
|
+
- worker-owned display composition that merges live Paperclip approvals into the final Focus snapshot before the UI sees it
|
|
80
|
+
- bounded Core trace export and sparse Focus action telemetry/activity writes for replay and debugging
|
|
81
|
+
- live Core diagnostics export, including signal summaries, memory profile snapshots, and current-session attention state for offline analysis
|
|
82
|
+
- worker-bridged operator signals for Focus page presence, active-item viewing, and context expansion so Aperture Core sees real interaction evidence instead of the plugin faking a second attention model
|
|
83
|
+
- overlay diagnostics export that compares `core -> reconciled -> display` so the plugin's host-policy contribution is inspectable without confusing it for Core judgment
|
|
78
84
|
- a sidebar entry, page, and dashboard widget
|
|
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
|
+
- bounded per-company Core sessions with health reporting so the worker does not grow without limit during normal multi-company use
|
|
87
|
+
- a corpus-backed `issue-intelligence` regression check in CI so heuristic edits stay inspectable
|
|
88
|
+
- rollback-safe local mutations that restore the last durable attention state if persistence fails
|
|
89
|
+
- versioned persisted attention envelopes with an explicit migration path for older schemas
|
|
79
90
|
|
|
80
91
|
## Explainability
|
|
81
92
|
|
|
@@ -99,33 +110,39 @@ The intent is not to expose every internal scoring detail. It is to help an oper
|
|
|
99
110
|
|
|
100
111
|
This plugin treats Paperclip as the host runtime and UI shell, while embedding [Aperture Core](https://github.com/tomismeta/aperture/tree/main/packages/core) through the npm package [`@tomismeta/aperture-core`](https://www.npmjs.com/package/@tomismeta/aperture-core).
|
|
101
112
|
|
|
102
|
-
It is
|
|
113
|
+
It is an SDK-first integration with explicit plugin-side host policy. Aperture Core handles continuity, replay, and global attention mechanics; the plugin adds Paperclip-specific candidate generation, approval overlays, and operator language where the host can know more than Core alone.
|
|
103
114
|
|
|
104
|
-
For `0.
|
|
115
|
+
For `0.4.x`, the boundary works like this:
|
|
105
116
|
|
|
106
|
-
- the plugin worker owns Aperture ingestion, replay, review state, and
|
|
117
|
+
- the plugin worker owns Aperture ingestion, replay, review state, display composition, reconciliation caching, and Paperclip-native policy overlays
|
|
118
|
+
- 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
|
|
107
119
|
- Paperclip remains the system of record for issue and approval writes
|
|
108
|
-
- approval transport
|
|
120
|
+
- 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
|
|
109
121
|
- the plugin intentionally publishes `ApertureEvent`s today, using a Paperclip-specific semantic mapping layer and ontology, rather than switching fully to `SourceEvent`
|
|
110
|
-
- that semantic layer includes reusable intent detectors, actor resolution against real company agents, downstream blocker extraction, and shared operator-language generation inside the plugin
|
|
122
|
+
- 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
|
|
123
|
+
- `activity.logged` document events invalidate stale reconciled state so document-backed review blockers refresh promptly without a full browser-side merge layer
|
|
124
|
+
- 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
|
|
111
125
|
|
|
112
|
-
The plugin has been validated against [`@tomismeta/aperture-core@0.
|
|
126
|
+
The plugin has been validated against [`@tomismeta/aperture-core@0.6.0`](https://www.npmjs.com/package/@tomismeta/aperture-core) and [`@paperclipai/plugin-sdk@2026.403.0`](https://www.npmjs.com/package/@paperclipai/plugin-sdk).
|
|
127
|
+
|
|
128
|
+
If your Paperclip host is not running at the default local address, set the plugin config field `paperclipApiBase` so the worker-side approval adapter can reach the correct host API.
|
|
113
129
|
|
|
114
130
|
## Development
|
|
115
131
|
|
|
116
132
|
```bash
|
|
117
133
|
pnpm install
|
|
118
|
-
pnpm
|
|
119
|
-
pnpm test
|
|
120
|
-
pnpm build
|
|
134
|
+
pnpm verify
|
|
121
135
|
```
|
|
122
136
|
|
|
123
137
|
Before releasing, run:
|
|
124
138
|
|
|
125
139
|
```bash
|
|
140
|
+
pnpm clean
|
|
126
141
|
pnpm release:check
|
|
127
142
|
```
|
|
128
143
|
|
|
144
|
+
`pnpm verify` runs typecheck, tests, the issue-intelligence eval corpus, a production build, and bundle-size checks.
|
|
145
|
+
|
|
129
146
|
For a live local Paperclip smoke test, start Paperclip first:
|
|
130
147
|
|
|
131
148
|
```bash
|
|
@@ -156,6 +173,8 @@ Then open `http://127.0.0.1:3100/APE/aperture` and verify:
|
|
|
156
173
|
|
|
157
174
|
- Plugin on npm: [`@tomismeta/paperclip-aperture`](https://www.npmjs.com/package/@tomismeta/paperclip-aperture)
|
|
158
175
|
- Roadmap and releasing: [docs/ROADMAP.md](./docs/ROADMAP.md)
|
|
176
|
+
- Architecture remediation note: [docs/AUDIT-REMEDIATION-2026-04.md](./docs/AUDIT-REMEDIATION-2026-04.md)
|
|
177
|
+
- Contribution guide: [CONTRIBUTING.md](./CONTRIBUTING.md)
|
|
159
178
|
- Aperture GitHub repo: [tomismeta/aperture](https://github.com/tomismeta/aperture)
|
|
160
179
|
- Aperture Core on npm: [`@tomismeta/aperture-core`](https://www.npmjs.com/package/@tomismeta/aperture-core)
|
|
161
180
|
- Paperclip GitHub repo: [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
|
package/dist/manifest.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
const manifest = {
|
|
2
2
|
id: "tomismeta.paperclip-aperture",
|
|
3
3
|
apiVersion: 1,
|
|
4
|
-
version: "0.4.
|
|
4
|
+
version: "0.4.2",
|
|
5
5
|
displayName: "Paperclip Aperture",
|
|
6
|
-
description: "The live attention layer for Paperclip,
|
|
6
|
+
description: "The live attention layer for Paperclip, combining Aperture Core continuity with Paperclip-native operator policy.",
|
|
7
7
|
author: "@tomismeta",
|
|
8
8
|
categories: ["automation", "ui"],
|
|
9
9
|
capabilities: [
|
|
10
10
|
"events.subscribe",
|
|
11
|
+
"http.outbound",
|
|
11
12
|
"agents.read",
|
|
12
13
|
"issues.read",
|
|
13
14
|
"issue.comments.read",
|
|
@@ -39,6 +40,12 @@ const manifest = {
|
|
|
39
40
|
title: "Capture Run Failures",
|
|
40
41
|
default: true,
|
|
41
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."
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
51
|
},
|