@tomismeta/paperclip-aperture 0.1.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 +105 -0
- package/dist/manifest.js +67 -0
- package/dist/ui/index.js +1133 -0
- package/dist/worker.js +11658 -0
- package/package.json +75 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Tom Is Meta
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# Paperclip Aperture
|
|
4
|
+
|
|
5
|
+
**A Focus view for Paperclip powered by Aperture's deterministic attention engine.**
|
|
6
|
+
|
|
7
|
+
[](https://github.com/tomismeta/aperture)
|
|
8
|
+
[](https://www.npmjs.com/package/@tomismeta/aperture-core)
|
|
9
|
+
[](https://github.com/paperclipai/paperclip)
|
|
10
|
+
|
|
11
|
+
<img src="https://raw.githubusercontent.com/tomismeta/paperclip-aperture/main/docs/assets/focus-demo.gif" alt="Paperclip Aperture" width="1400">
|
|
12
|
+
<p></p>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
Paperclip Aperture adds a Focus surface to Paperclip that deterministically ranks approvals, issue activity, and other human-facing events into `now`, `next`, and `ambient`.
|
|
16
|
+
|
|
17
|
+
## Install
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
paperclipai plugin install @tomismeta/paperclip-aperture
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
That is the intended consumer install path once the package is published.
|
|
24
|
+
|
|
25
|
+
If you need Paperclip first:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx paperclipai onboard --yes
|
|
29
|
+
paperclipai run
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Then install the plugin with the command above.
|
|
33
|
+
|
|
34
|
+
If you are testing from source before npm publish:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
git clone git@github.com:tomismeta/paperclip-aperture.git
|
|
38
|
+
cd paperclip-aperture
|
|
39
|
+
pnpm install
|
|
40
|
+
pnpm build
|
|
41
|
+
|
|
42
|
+
paperclipai plugin install /absolute/path/to/paperclip-aperture
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
After install, open Paperclip and use the `Focus` entry in the sidebar.
|
|
46
|
+
|
|
47
|
+
## Flow
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
Paperclip events
|
|
51
|
+
approvals / issues / human-facing signals
|
|
52
|
+
|
|
|
53
|
+
v
|
|
54
|
+
paperclip-aperture
|
|
55
|
+
normalize host facts into Aperture inputs
|
|
56
|
+
|
|
|
57
|
+
v
|
|
58
|
+
Aperture Core SDK
|
|
59
|
+
deterministically judge now / next / ambient
|
|
60
|
+
|
|
|
61
|
+
v
|
|
62
|
+
Focus in Paperclip
|
|
63
|
+
sidebar / page / widget
|
|
64
|
+
|
|
|
65
|
+
v
|
|
66
|
+
human response
|
|
67
|
+
approve / reject / request revision / acknowledge
|
|
68
|
+
|
|
|
69
|
+
v
|
|
70
|
+
Paperclip updates, Focus reshuffles
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## What You Get
|
|
74
|
+
|
|
75
|
+
- a Focus surface inside Paperclip
|
|
76
|
+
- ranked `now`, `next`, and `ambient` attention lanes
|
|
77
|
+
- approval handling, including budget-specific approval semantics
|
|
78
|
+
- a sidebar entry, page, and dashboard widget
|
|
79
|
+
|
|
80
|
+
## Package Boundary
|
|
81
|
+
|
|
82
|
+
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).
|
|
83
|
+
|
|
84
|
+
It is a pure SDK integration: Aperture Core is used as-is inside a self-contained Paperclip plugin, with no changes to Aperture Core or Paperclip core.
|
|
85
|
+
|
|
86
|
+
## Development
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
pnpm install
|
|
90
|
+
pnpm typecheck
|
|
91
|
+
pnpm test
|
|
92
|
+
pnpm build
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Before publishing, run:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
pnpm release:check
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Links
|
|
102
|
+
|
|
103
|
+
- Aperture GitHub repo: [tomismeta/aperture](https://github.com/tomismeta/aperture)
|
|
104
|
+
- Aperture Core on npm: [`@tomismeta/aperture-core`](https://www.npmjs.com/package/@tomismeta/aperture-core)
|
|
105
|
+
- Paperclip GitHub repo: [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
|
package/dist/manifest.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const manifest = {
|
|
2
|
+
id: "tomismeta.paperclip-aperture",
|
|
3
|
+
apiVersion: 1,
|
|
4
|
+
version: "0.1.2",
|
|
5
|
+
displayName: "Paperclip Aperture",
|
|
6
|
+
description: "An Aperture-powered attention center for Paperclip operators.",
|
|
7
|
+
author: "Tom Is Meta",
|
|
8
|
+
categories: ["connector", "automation", "ui"],
|
|
9
|
+
capabilities: [
|
|
10
|
+
"events.subscribe",
|
|
11
|
+
"issues.read",
|
|
12
|
+
"plugin.state.read",
|
|
13
|
+
"plugin.state.write",
|
|
14
|
+
"ui.dashboardWidget.register",
|
|
15
|
+
"ui.page.register",
|
|
16
|
+
"ui.sidebar.register"
|
|
17
|
+
],
|
|
18
|
+
entrypoints: {
|
|
19
|
+
worker: "./dist/worker.js",
|
|
20
|
+
ui: "./dist/ui"
|
|
21
|
+
},
|
|
22
|
+
instanceConfigSchema: {
|
|
23
|
+
type: "object",
|
|
24
|
+
properties: {
|
|
25
|
+
captureIssueLifecycle: {
|
|
26
|
+
type: "boolean",
|
|
27
|
+
title: "Capture Issue Lifecycle",
|
|
28
|
+
default: true,
|
|
29
|
+
description: "Turn issue creation and update events into Aperture status signals."
|
|
30
|
+
},
|
|
31
|
+
captureRunFailures: {
|
|
32
|
+
type: "boolean",
|
|
33
|
+
title: "Capture Run Failures",
|
|
34
|
+
default: true,
|
|
35
|
+
description: "Turn failed agent runs into high-salience attention events."
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
ui: {
|
|
40
|
+
slots: [
|
|
41
|
+
{
|
|
42
|
+
type: "page",
|
|
43
|
+
id: "attention-page",
|
|
44
|
+
displayName: "Focus",
|
|
45
|
+
exportName: "AttentionPage",
|
|
46
|
+
routePath: "aperture"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
type: "sidebar",
|
|
50
|
+
id: "attention-sidebar-link",
|
|
51
|
+
displayName: "Focus",
|
|
52
|
+
exportName: "AttentionSidebarLink"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: "dashboardWidget",
|
|
56
|
+
id: "attention-widget",
|
|
57
|
+
displayName: "Focus",
|
|
58
|
+
exportName: "DashboardWidget"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
var manifest_default = manifest;
|
|
64
|
+
export {
|
|
65
|
+
manifest_default as default
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=manifest.js.map
|