@tomismeta/paperclip-aperture 0.5.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 CHANGED
@@ -13,191 +13,134 @@
13
13
  <p></p>
14
14
  </div>
15
15
 
16
- Paperclip Aperture adds a Focus surface to Paperclip that turns approvals, issue activity, and other human-facing signals into `now`, `next`, and `ambient`.
16
+ Paperclip Aperture adds a **Focus** surface to Paperclip, turning approvals, issue activity, and agent signals into three attention lanes:
17
17
 
18
- It is designed as a live attention layer, not an inbox clone:
18
+ - **now** — the single item that most needs your attention
19
+ - **next** — the queue behind it
20
+ - **ambient** — low-pressure awareness without an immediate demand for action
19
21
 
20
- - `now` shows the single most interrupting item
21
- - `next` stages the queue behind it
22
- - `ambient` keeps low-pressure awareness visible without demanding action
23
- - unread state is secondary to action pressure, so Focus stays judgment-first instead of becoming a second inbox
22
+ Inbox tells you what changed. Focus tells you what deserves attention now, with recommended moves and reasoning attached to the cards.
24
23
 
25
- Put differently:
24
+ ## Requirements
26
25
 
27
- - Inbox tells you what changed
28
- - Focus tells you what deserves attention now
29
- - Inbox mirrors source records
30
- - Focus re-stacks them into an operator-facing queue with recommended moves
26
+ - **Node.js:** `>=24.11.0`
27
+ - **Paperclip:** official, unmodified `2026.1023.0` is the minimum API baseline and the tested stock host. Newer host versions are not automatically certified. See [known limitations](#known-limitations).
28
+ - **Aperture Core:** `0.10.0`, included as a dependency alongside `@paperclipai/plugin-sdk@2026.1023.0`
29
+
30
+ Version **0.6.0** upgrades the published `0.5.1` baseline from Core `0.9.0`, retaining the worker-owned integration and existing Focus behavior. No Paperclip fork or host patch is required.
31
31
 
32
32
  ## Install
33
33
 
34
+ Authenticate the CLI as an instance administrator for the intended Paperclip host, then check its target before installing. Set the URL below to that host:
35
+
34
36
  ```bash
35
- npx paperclipai plugin install @tomismeta/paperclip-aperture
37
+ export PAPERCLIP_API_BASE="http://127.0.0.1:3100"
38
+ npx paperclipai@2026.1023.0 plugin target --api-base "$PAPERCLIP_API_BASE"
39
+ npx paperclipai@2026.1023.0 plugin install @tomismeta/paperclip-aperture --version 0.6.0 --api-base "$PAPERCLIP_API_BASE"
36
40
  ```
37
41
 
38
- If you need Paperclip first:
42
+ The pinned CLI selects a client version; it does not upgrade or patch the server. If you need Paperclip first, follow its [host setup instructions](https://github.com/paperclipai/paperclip).
39
43
 
40
- ```bash
41
- npx paperclipai onboard --yes
42
- npx paperclipai run
43
- ```
44
+ After installation, open Paperclip and select **Focus** in the sidebar. No plugin-specific API-base configuration or outbound HTTP access is required for approval handling; CLI `--api-base` selects the host and is separate from plugin configuration.
44
45
 
45
- Then install the plugin with the command above.
46
+ ## What you get
46
47
 
47
- After install, open Paperclip and use the `Focus` entry in the sidebar.
48
+ - A Focus page, sidebar entry, and dashboard widget.
49
+ - Dynamic attention lanes with issue-aware recommendations, document/dependency context, and routing that distinguishes company agents from human operators.
50
+ - Native approval actions and inline plain confirmations with host-verified human attribution and fresh eligibility checks. Budget revisions, questions, and specialized requests hand off to native Paperclip pages.
51
+ - Separate cards for multiple decisions on the same issue; resolving one does not dismiss its siblings.
52
+ - Inline issue comments, with long summaries and failure diagnostics kept under **Show context** rather than crowding the headline.
53
+ - Durable acknowledgement and suppression backed by saved review state and ledger replay.
54
+ - Separate run-failure attention that preserves execution history and reflects authoritative retry/watchdog facts when the host supplies them.
55
+ - Diagnostics exports for the live Core state, the plugin-composed display, synchronization errors, and bounded Core traces.
48
56
 
49
- ## Troubleshooting
57
+ ## Understanding Focus
50
58
 
51
- - If the sidebar shows a bordered placeholder instead of the `Focus` entry, upgrade to Paperclip `2026.525.0` or newer and reinstall this plugin. `0.4.5+` preserves the original Focus sidebar icon and uses the current host invocation scope.
52
- - `paperclipApiBase` is only needed for approval overlays. Use the Paperclip origin such as `https://HOST` or `http://127.0.0.1:3100`; leaving it empty disables approval overlay reads without disabling Focus.
53
- - On Windows, `spawn npm ENOENT` during `npx paperclipai plugin install @tomismeta/paperclip-aperture` comes from the Paperclip host installer failing to spawn npm. This package does not spawn npm during install. Make sure the Paperclip process can resolve `npm.cmd`, or upgrade Paperclip once the Windows installer fix is available.
59
+ Reasoning stays attached to the cards you are acting on:
54
60
 
55
- ## Napkin Diagram
61
+ - **Why now** explains why the current item outranks the queue.
62
+ - **Why next** explains why an item is staged behind it.
63
+ - **Confidence** shows the strength of the semantic signal when available.
64
+ - **Signals** lists the factors that brought an item into attention.
65
+ - **Thread context** and **Related activity** show the surrounding episode.
56
66
 
57
- ```text
58
- +--------------+ +--------------+ +--------------+ +--------------+ +--------------+
59
- | Arrive | | Translate | | Judge | | Show | | Respond |
60
- | events | | facts | | attention | | surface | | action |
61
- +--------------+ +--------------+ +--------------+ +--------------+ +--------------+
62
- | | | | |
63
- +-----> +-----> +-----> +-----> |
67
+ Unread state is secondary to action pressure: an unread item is not automatically the most important item.
64
68
 
65
- tool hooks explicit facts does this what the operator decision
66
- from Paperclip from raw payloads deserve operator carried back
67
- and agents attention now? actually sees to the tool
68
- ```
69
+ ### Keeping your place
69
70
 
70
- ## What You Get
71
-
72
- - a Focus surface inside Paperclip
73
- - ranked `now`, `next`, and `ambient` attention lanes
74
- - embedded explainability in the Focus UI, including `Why now`, `Why next`, confidence, signals, thread context, and related activity
75
- - 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
76
- - approval handling, including budget-specific approval semantics
77
- - issue-aware operator language such as `review required`, `blocked`, and targeted recommended moves
78
- - agent-aware routing that distinguishes known company agents from human/operator roles when issue text references them
79
- - a plugin-local semantic mapping and policy layer that interprets Paperclip issue, approval, and agent signals before composing the final Focus view
80
- - richer semantic continuity hints on mapped issue events, including `supersedes` and `resolves` relationships where Paperclip-specific intent is clear
81
- - 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`
82
- - Paperclip watchdog awareness that preserves watchdog metadata and promotes only pending watchdog triggers into higher-salience Focus evidence
83
- - dynamic re-stacking so items can move between `now`, `next`, and `ambient` as new evidence arrives
84
- - inline issue commenting from the Focus surface when a Paperclip issue supports written response
85
- - durable acknowledge/suppression behavior backed by plugin state and ledger replay
86
- - worker-owned display composition that merges live Paperclip approvals into the final Focus snapshot before the UI sees it
87
- - bounded Core trace export and sparse Focus action telemetry/activity writes for replay and debugging
88
- - live Core diagnostics export, including signal summaries, memory profile snapshots, and current-session attention state for offline analysis
89
- - 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
90
- - overlay diagnostics export that compares `core -> reconciled -> display` so the plugin's host-policy contribution is inspectable without confusing it for Core judgment
91
- - a sidebar entry, page, and dashboard widget
92
- - worker-side host read caching for issue/comment/document/agent reconciliation, with fresh summary/export reads when you need the latest host truth
93
- - bounded per-company Core sessions with health reporting so the worker does not grow without limit during normal multi-company use
94
- - 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
95
- - decision-owner metadata on reconciled/display frames so exports can distinguish Core judgment, Paperclip reconciliation, approval overlays, and final display promotion
96
- - a corpus-backed `issue-intelligence` regression check in CI so heuristic edits stay inspectable
97
- - rollback-safe local mutations that restore the last durable attention state if persistence fails
98
- - versioned persisted attention envelopes with an explicit migration path for older schemas
99
-
100
- ## Explainability
101
-
102
- Focus is meant to be more legible than a smart inbox.
103
-
104
- The current `0.4.x` explainability slice keeps reasoning attached to the cards you are already acting on:
105
-
106
- - `Why now` on the active card explains why the current item outranks the rest of the queue
107
- - `Why next` on queued rows explains why something is staged behind the current top item
108
- - `Confidence` shows how strong the semantic signal is when the plugin has one
109
- - `Signals` surfaces the specific factors that pushed the item into attention
110
- - `Thread context` and `Related activity` help explain whether an item is part of a broader episode or continuation
111
-
112
- The intent is not to expose every internal scoring detail. It is to help an operator answer:
113
-
114
- - why did this surface?
115
- - why is it in this lane?
116
- - how much should I trust this judgment?
117
-
118
- ## Package Boundary
119
-
120
- 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).
121
-
122
- 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.
123
-
124
- For `0.5.x`, the boundary works like this:
125
-
126
- - the plugin worker owns Aperture ingestion, replay, review state, display composition, reconciliation caching, and Paperclip-native policy overlays
127
- - 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
128
- - Paperclip remains the system of record for issue and approval writes
129
- - 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
130
- - 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
131
- - 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
132
- - typed Paperclip issue blocker relations and watchdog summaries are preserved as Focus context/provenance/metadata so Aperture has better dependency facts without the plugin inventing dependency routing
133
- - `activity.logged` document events invalidate stale reconciled state so document-backed review blockers refresh promptly without a full browser-side merge layer
134
- - Paperclip `agent.error_cleared` events invalidate reconciled agent state, and redacted deleted comments are ignored when Focus chooses the latest operator signal
135
- - native Paperclip issue document and relation events invalidate reconciled state directly, with `activity.logged` retained as a compatibility fallback
136
- - document-scoped issue comments remain contextual status updates rather than being treated as top-level follow-up requests
137
- - validated Paperclip run diagnostics can become Core 0.9 `SourceEvidence`; arbitrary prose and malformed evidence are ignored
138
- - subscribed event callbacks stay memory-only and flush pending Aperture state from the next scoped data/action bridge call, keeping host invocation scope boundaries intact without losing replay durability after Focus refreshes
139
- - 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
140
- - Aperture Core `0.9.x` semantic and judgment hardening is consumed through this existing `ApertureCore` integration; the plugin does not run the Core `./kernel` subpath as a second runtime judgment system
141
-
142
- The plugin requires Paperclip `2026.525.0` or newer and has been validated against the published [`@tomismeta/aperture-core@0.9.0`](https://www.npmjs.com/package/@tomismeta/aperture-core/v/0.9.0) artifact and [`@paperclipai/plugin-sdk@2026.722.0`](https://www.npmjs.com/package/@paperclipai/plugin-sdk/v/2026.722.0). The plugin resolves configuration per Paperclip company so settings do not bleed across company contexts.
143
-
144
- Paperclip `2026.722.0` has an upstream installer issue where the running server may report host version `0.0.0` during plugin minimum-version validation. If installation fails with that message, upgrade to a Paperclip server release containing the host-version fix; do not lower the plugin's declared minimum host version.
145
-
146
- 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.
71
+ Opening **Show context** requests a 20-second focus hold; opening the comment composer requests 45 seconds. Holds preserve the current task or interaction against ordinary queue promotion while still showing fresh host content. Explicit urgency, Core preemption, terminal state, suppression, replacement, and ambient recovery can still take precedence.
147
72
 
148
- ## Development
73
+ Reads do not extend a hold. Expiry, worker restart, and session eviction end it. Comment drafts stay local to the mounted company/task/interaction and survive timestamp-only updates, but are not durable across displacement or company changes.
149
74
 
150
- ```bash
151
- pnpm install
152
- pnpm verify
153
- ```
75
+ ### Synchronization and persistence
154
76
 
155
- Before releasing, run:
77
+ Failed reconciliation keeps the last complete candidate set visible with a synchronization warning. Fresh summary/export reads require successful issue, agent, and interaction reconciliation; native approval overlays use a separate 15-second cache with event/action invalidation, including in exports.
156
78
 
157
- ```bash
158
- pnpm clean
159
- pnpm release:check
160
- ```
79
+ Issue discovery uses the supported unpaged SDK collection; agent discovery remains paginated. Neither has a plugin-imposed total cap. Complete issue discovery depends on the host returning the complete accessible collection.
161
80
 
162
- `pnpm verify` runs typecheck, tests, the issue-intelligence eval corpus, a production build, and bundle-size checks.
81
+ Company changes withhold the previous company's display while the new scope loads. Local review updates are serialized with persistence so concurrent tabs retain each other's acknowledgements.
163
82
 
164
- For a live local Paperclip smoke test, start Paperclip first:
83
+ Native comment writes and local state persistence are separate transactions. If Paperclip confirms a comment but local persistence fails, Focus reports that it posted with a synchronization warning rather than asking you to repost. Unknown native-write outcomes still report an error; this is not an exactly-once guarantee.
165
84
 
166
- ```bash
167
- pnpm build
168
- npx paperclipai run -i default
169
- ```
85
+ Subscription callbacks remain in memory until a scoped read or action hydrates and flushes state. A worker restart, the 30-minute idle eviction, or the 100-company session cap can discard unflushed callback facts. Saved history and review state are persisted separately from that pending buffer.
86
+
87
+ ## Upgrading from 0.5.1
88
+
89
+ Back up host data and plugin configuration before upgrading, and meet the host and Node.js requirements above.
90
+
91
+ - Persisted attention state migrates from schema 3 to schema 5. Legacy approval acknowledgements remain local audit/suppression records; they do not become native approval decisions.
92
+ - Approval reads and decisions now use the native company-scoped SDK client. Stored `paperclipApiBase` values are ignored; the legacy worker HTTP adapter is removed.
93
+ - Approve/reject and issue comments require a host-authenticated human operator and retain that human's attribution.
94
+ - Do not purge plugin state or run an older worker against schema 5.
170
95
 
171
- Then, in a second terminal:
96
+ The native migration qualification used a no-force local-package switch and a cold host/worker restart. It does not certify the host's version-only upgrade endpoint or every historical state.
97
+
98
+ ## Architecture
99
+
100
+ - **Aperture Core** owns continuity, replay, and attention mechanics through the existing stateful `ApertureCore` integration.
101
+ - **The plugin worker** owns ingestion, review state, reconciliation, display composition, and Paperclip-specific candidate/lane policy. The result is Core-backed, not Core-only.
102
+ - **Paperclip** owns native issue, interaction, and approval records, authorization, and the UI shell.
103
+
104
+ The worker resolves configuration per company. Configuration changes retain the host's worker-restart behavior. Diagnostics distinguish Core judgment, reconciliation, approval overlays, and final display promotion.
105
+
106
+ ## Known limitations
107
+
108
+ These limitations apply to the stock host and remain part of this release:
109
+
110
+ - **Updates are not always instant.** Focus uses a 15-second visible-page polling cycle, plus visibility and action refresh. Reliable cross-client push is unavailable on the observed stock host; its stream endpoint returned HTTP 501.
111
+ - **Recovery visibility is incomplete.** The public worker API does not expose all retry/recovery facts. Complete recovery context and actual continuation are not certified. Missing facts do not mean no recovery is running.
112
+ - **Company navigation has a known host issue.** After switching companies and using browser Back, the host's company selector can disagree with the route. Tested plugin company-isolation guards remain intact; they do not fix the host selector.
113
+
114
+ The plugin retains its streaming hooks and conditional recovery/watchdog support when the host supplies the necessary facts. These are documented host limitations, not features removed for this release or a claim of full host-feature compatibility.
115
+
116
+ ## Troubleshooting
117
+
118
+ - **Placeholder instead of Focus:** check the host's API baseline and the plugin's status, then refresh the UI. A matching version number alone does not establish full runtime compatibility.
119
+ - **Approval or comment permission errors:** use a host-authenticated human with access to the intended company. Adding a legacy API-base setting does not bypass native authorization.
120
+ - **Host version reported as `0.0.0`:** older Paperclip installers can misreport their version. Upgrade to a server release containing the host-version fix; do not lower the plugin's minimum version.
121
+ - **Windows `spawn npm ENOENT`:** the Paperclip installer cannot resolve npm. Ensure the host process can find `npm.cmd`, or use a Paperclip release with the installer fix. This plugin does not spawn npm during installation.
122
+
123
+ ## Development
124
+
125
+ Use Node.js `>=24.11.0` and pnpm 10. CI uses Node.js `24.21.0`.
172
126
 
173
127
  ```bash
174
- npx paperclipai context set --api-base http://localhost:3100
175
- npx paperclipai plugin uninstall tomismeta.paperclip-aperture --force
176
- npx paperclipai plugin install --local .
128
+ pnpm install
129
+ pnpm verify
177
130
  ```
178
131
 
179
- 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.
132
+ `pnpm verify` runs typecheck, tests, the issue-intelligence corpus, a production build, and bundle-size checks. Before packaging a release, run:
180
133
 
181
- Then open `http://127.0.0.1:3100/APE/aperture` and verify:
134
+ ```bash
135
+ pnpm release:check
136
+ ```
182
137
 
183
- - `Acknowledge` hides the active card and survives refresh
184
- - `Next` promotes into `Now`
185
- - issue comments post successfully from Focus
186
- - approval actions update Focus correctly when `paperclipApiBase` is configured
187
- - resolved blocker comments downgrade stale `Now` items
188
- - attached issue documents downgrade stale `share the memo/spec` review blockers into monitor-only follow-up
189
- - deleted issue comments do not displace the latest visible operator signal
190
- - clearing an agent error removes stale agent-error focus cards
191
- - the active card exposes `Why now`
192
- - expanded queued rows expose `Why next`
138
+ Use disposable host instances for native testing, not your normal Paperclip data. For registry-install tests, isolate the host process's `HOME` as well as `PAPERCLIP_HOME`: this host stores downloaded plugins in `$HOME/.paperclip/plugins`, independently of `--data-dir`. Do not force-uninstall an existing user installation to prepare a test.
193
139
 
194
140
  ## Links
195
141
 
196
- - Plugin on npm: [`@tomismeta/paperclip-aperture`](https://www.npmjs.com/package/@tomismeta/paperclip-aperture)
197
- - Roadmap and releasing: [docs/ROADMAP.md](./docs/ROADMAP.md)
198
- - Architecture remediation note: [docs/AUDIT-REMEDIATION-2026-04.md](./docs/AUDIT-REMEDIATION-2026-04.md)
199
- - May 2026 audit remediation note: [docs/AUDIT-REMEDIATION-2026-05.md](./docs/AUDIT-REMEDIATION-2026-05.md)
200
- - Contribution guide: [CONTRIBUTING.md](./CONTRIBUTING.md)
201
- - Aperture GitHub repo: [tomismeta/aperture](https://github.com/tomismeta/aperture)
202
- - Aperture Core on npm: [`@tomismeta/aperture-core`](https://www.npmjs.com/package/@tomismeta/aperture-core)
203
- - Paperclip GitHub repo: [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
142
+ - [Paperclip Aperture on npm](https://www.npmjs.com/package/@tomismeta/paperclip-aperture)
143
+ - [Source repository](https://github.com/tomismeta/paperclip-aperture)
144
+ - [Contribution guide](https://github.com/tomismeta/paperclip-aperture/blob/main/CONTRIBUTING.md)
145
+ - [Aperture](https://github.com/tomismeta/aperture) · [Aperture Core on npm](https://www.npmjs.com/package/@tomismeta/aperture-core)
146
+ - [Paperclip](https://github.com/paperclipai/paperclip)
package/dist/manifest.js CHANGED
@@ -1 +1 @@
1
- var e={id:"tomismeta.paperclip-aperture",apiVersion:1,version:"0.5.0",minimumHostVersion:"2026.525.0",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"}]}},t=e;export{t as default};
1
+ var e={id:"tomismeta.paperclip-aperture",apiVersion:1,version:"0.6.0",minimumHostVersion:"2026.1023.0",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","agents.read","approvals.read","approvals.respond","issues.read","issue.relations.read","issue.comments.read","issue.comments.create","issue.comments.create_human_attributed","issue.documents.read","issue.interactions.read","issue.interactions.respond","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."}}},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"}]}},t=e;export{t as default};