@kujolang/paperclip 0.1.0 → 0.1.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/CHANGELOG.md CHANGED
@@ -1,18 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.2 - 2026-09-02
4
+
5
+ - Publish through npm trusted publishing with short-lived GitHub Actions identity tokens instead of a stored npm token.
6
+ - Verify the published package through a clean public-registry installation before creating the GitHub release.
7
+
8
+ ## 0.1.1 - 2026-09-02
9
+
10
+ - Work around Paperclip `2026.831.1` reporting host version `0.0.0` to the plugin loader while retaining the documented `2026.824.1` support floor.
11
+ - Complete Windows component fallbacks and cross-platform npm verification.
12
+
3
13
  ## 0.1.0 - 2026-09-02
4
14
 
5
15
  - Add Review Pack, Failure Evidence, and Context Pack tools and UI actions for Paperclip.
6
16
  - Bundle and verify ChangeBucket, PatchBrief, CaseFile, and Scent component snapshots.
7
17
  - Enforce company-scoped state, feature policy, stale-context rejection, workspace bounds, hostile Git configuration suppression, and process-tree cleanup.
8
18
  - Add cross-platform compatibility, dependency review, CodeQL, SBOM, provenance, signed-tag, and exact-tarball release controls.
9
-
10
- ## 0.1.0
11
-
12
- - Initial Paperclip-native Review Pack, Failure Evidence, and Context Pack.
13
- - Lifecycle-script-free Kujo runtime resolution and deterministic component bundle.
14
- - Strict workspace, process, output, redaction, schema, provenance, and stale-state boundaries.
15
- - Monochrome project badges and install-first ecosystem documentation.
16
- - Root agent, contribution, security, and version contracts.
17
- - Reproducible lockfile-based CI and npm release gates.
18
- - Exact Kujo `1.2.2` runtime dependency with the restored Windows package build.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Kujo for Paperclip
2
2
 
3
- [![Version](https://img.shields.io/badge/version-0.1.0-black)](https://github.com/kujolang/paperclip/releases/tag/v0.1.0)
3
+ [![Version](https://img.shields.io/badge/version-0.1.2-black)](https://github.com/kujolang/paperclip/releases/tag/v0.1.2)
4
4
  [![License](https://img.shields.io/badge/license-MIT-lightgrey)](LICENSE)
5
5
  [![built with Kujo](https://img.shields.io/badge/built%20with-Kujo-white.svg)](https://github.com/kujolang/kujo)
6
6
 
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.2
package/dist/manifest.js CHANGED
@@ -14527,8 +14527,8 @@ var DEFAULT_LIMITS = {
14527
14527
  maxInputLogBytes: 2e5,
14528
14528
  maxContextFileBytes: 2e3
14529
14529
  };
14530
- var PLUGIN_VERSION = "0.1.0";
14531
- var MINIMUM_HOST_VERSION = "2026.824.1";
14530
+ var PLUGIN_VERSION = "0.1.2";
14531
+ var MINIMUM_HOST_VERSION = "0.0.0";
14532
14532
 
14533
14533
  // src/config/schema.ts
14534
14534
  var pluginConfigSchema = external_exports.object({
package/dist/worker.js CHANGED
@@ -28926,7 +28926,7 @@ var CONTEXT_BUDGETS = {
28926
28926
  focused: 16e3,
28927
28927
  broad: 4e4
28928
28928
  };
28929
- var PLUGIN_VERSION = "0.1.0";
28929
+ var PLUGIN_VERSION = "0.1.2";
28930
28930
  var PAPERCLIP_API_VERSION = 1;
28931
28931
 
28932
28932
  // src/config/schema.ts
@@ -29440,7 +29440,7 @@ async function runComponent(input) {
29440
29440
  executable: runtime.executable,
29441
29441
  cwd: input.cwd,
29442
29442
  args: invocation,
29443
- timeoutMs: input.config.limits.timeoutMs,
29443
+ timeoutMs: Math.min(input.timeoutMs ?? input.config.limits.timeoutMs, input.config.limits.timeoutMs),
29444
29444
  maxStdoutBytes: input.config.limits.maxStdoutBytes,
29445
29445
  maxStderrBytes: input.config.limits.maxStderrBytes
29446
29446
  });
@@ -29610,7 +29610,7 @@ async function prepareContextWorkspace(cwd, task) {
29610
29610
  timeout: 1e4,
29611
29611
  windowsHide: true
29612
29612
  });
29613
- return { path: mirror, cleanup: async () => await removeTree(mirror) };
29613
+ return { path: mirror, selectedPaths: paths, cleanup: async () => await removeTree(mirror) };
29614
29614
  } catch (error51) {
29615
29615
  await removeTree(mirror);
29616
29616
  throw error51;
@@ -30070,14 +30070,33 @@ async function generateContextPack(input) {
30070
30070
  if (process.platform !== "win32") {
30071
30071
  for (const exclusion of EXCLUSIONS) args.push("--exclude", exclusion);
30072
30072
  }
30073
- const result = await runComponent({
30074
- component: "context",
30075
- cwd: workspace.path,
30076
- args,
30077
- config: input.config,
30078
- acceptExitCodes: process.platform === "win32" ? [0, 1] : [0]
30079
- });
30080
- const output = JSON.parse(await readFile4(join5(temp, "context.json"), "utf8"));
30073
+ let result;
30074
+ let output;
30075
+ try {
30076
+ result = await runComponent({
30077
+ component: "context",
30078
+ cwd: workspace.path,
30079
+ args,
30080
+ config: input.config,
30081
+ acceptExitCodes: process.platform === "win32" ? [0, 1] : [0],
30082
+ timeoutMs: 8e3
30083
+ });
30084
+ output = JSON.parse(await readFile4(join5(temp, "context.json"), "utf8"));
30085
+ } catch (error51) {
30086
+ if (!(error51 instanceof KujoPluginError) || error51.code !== "KUJO_EXEC_TIMEOUT") throw error51;
30087
+ const selected = workspace.selectedPaths.slice(0, MAX_FILES2[input.depth]);
30088
+ output = {
30089
+ selected_files: selected.map((path2, index) => ({
30090
+ path: path2,
30091
+ reason: "Selected by Paperclip's bounded task-path fallback",
30092
+ score: Math.max(1, selected.length - index)
30093
+ })),
30094
+ estimated_tokens: selected.length * Math.ceil(DEFAULT_LIMITS.maxContextFileBytes / 4),
30095
+ excluded: workspace.selectedPaths.slice(selected.length),
30096
+ truncated: workspace.selectedPaths.length >= selected.length,
30097
+ warnings: ["Canonical context selection exceeded its bounded execution window"]
30098
+ };
30099
+ }
30081
30100
  const files = (output.selected_files ?? []).flatMap((file2) => {
30082
30101
  if (typeof file2.path !== "string") return [];
30083
30102
  return [{
@@ -30089,7 +30108,7 @@ async function generateContextPack(input) {
30089
30108
  });
30090
30109
  const estimatedTokens = typeof output.estimated_tokens === "number" ? Math.max(0, Math.trunc(output.estimated_tokens)) : 0;
30091
30110
  const truncated = output.truncated === true || estimatedTokens > budget || files.length >= MAX_FILES2[input.depth];
30092
- const cacheKey = createHash3("sha256").update(`${input.workspaceId}\0${snapshot.fingerprint}\0${task.toLowerCase()}\0${input.depth}\0${result.componentVersion}`).digest("hex");
30111
+ const cacheKey = createHash3("sha256").update(`${input.workspaceId}\0${snapshot.fingerprint}\0${task.toLowerCase()}\0${input.depth}\0${result?.componentVersion ?? PLUGIN_VERSION}`).digest("hex");
30093
30112
  return contextPackSchema.parse({
30094
30113
  schemaVersion: 1,
30095
30114
  id: `context_${randomUUID3()}`,
@@ -30110,10 +30129,10 @@ async function generateContextPack(input) {
30110
30129
  cacheKey,
30111
30130
  provenance: {
30112
30131
  pluginVersion: PLUGIN_VERSION,
30113
- kujoRuntimeVersion: result.runtimeVersion,
30114
- componentId: result.component,
30115
- componentVersion: result.componentVersion,
30116
- componentCommit: result.componentCommit
30132
+ kujoRuntimeVersion: result?.runtimeVersion ?? "bounded-fallback",
30133
+ componentId: result?.component ?? "paperclip-context-fallback",
30134
+ componentVersion: result?.componentVersion ?? PLUGIN_VERSION,
30135
+ componentCommit: result?.componentCommit ?? "bundled"
30117
30136
  }
30118
30137
  });
30119
30138
  } finally {
@@ -13,6 +13,7 @@ The plugin supports macOS arm64/x64, Linux arm64/x64, and Windows x64. CI runs t
13
13
  ## Change rules
14
14
 
15
15
  - Patch releases keep the same artifact schemas and minimum host train.
16
+ - Paperclip `2026.831.1` reports `0.0.0` to its plugin loader. The manifest gate is neutralized for that host defect; install documentation and the tested SDK matrix remain authoritative for the supported host floor.
16
17
  - Before 1.0, a minor release may add fields or raise a minimum version. The changelog must call out either change.
17
18
  - Readers accept additive fields but reject unknown schema versions.
18
19
  - Context content requires the same company, project, workspace, and Git snapshot that produced the pack.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kujolang/paperclip",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Make Paperclip agent work easier to scope, review, reproduce, and verify.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/kujolang/paperclip#readme",