@astrosheep/keiyaku 4.5.2 → 4.5.3

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keiyaku",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Use the Keiyaku contract, task, and Akuma CLI.",
5
5
  "author": {
6
6
  "name": "Keiyaku"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keiyaku",
3
- "version": "0.1.0+codex.20260826051747",
3
+ "version": "0.1.1+codex.20260826070830",
4
4
  "description": "Use the Keiyaku contract, task, and Akuma CLI.",
5
5
  "author": {
6
6
  "name": "Keiyaku"
@@ -1,12 +1,15 @@
1
1
  {
2
2
  "name": "keiyaku-harness",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "type": "module",
5
5
  "main": "./opencode.js",
6
6
  "keywords": [
7
7
  "pi-package"
8
8
  ],
9
9
  "pi": {
10
+ "extensions": [
11
+ "../../../pi/keiyaku.ts"
12
+ ],
10
13
  "skills": [
11
14
  "./skills"
12
15
  ]
@@ -100,7 +100,7 @@ function overlay(lines: readonly string[], theme: Theme, done: () => void) {
100
100
  if (data === "\u001b" || data === "q" || data === "Q" || data === "\r") done();
101
101
  },
102
102
  render(width: number): string[] {
103
- const inner = Math.max(20, Math.min(100, width - 4));
103
+ const inner = Math.max(1, Math.min(100, width - 2));
104
104
  const border = theme.fg("border", "+");
105
105
  const rule = theme.fg("border", "-".repeat(inner));
106
106
  return [
@@ -124,23 +124,31 @@ export default function keiyakuExtension(pi: ExtensionAPI): void {
124
124
  const refresh = async (ctx: Pick<ExtensionContext, "hasUI" | "ui">): Promise<void> => {
125
125
  if (!ctx.hasUI) return;
126
126
  refreshInFlight ??= (async () => {
127
- const result = await run(pi, ["status", "--json"]);
128
- const report = parseReport(result);
129
- if (report === undefined) {
130
- const diagnostic = result.stderr.trim() || "status unavailable";
131
- ctx.ui.setWidget("keiyaku", [`Keiyaku · ${lineForWidth(diagnostic, 100)}`]);
132
- } else ctx.ui.setWidget("keiyaku", [summary(report)]);
127
+ try {
128
+ const result = await run(pi, ["status", "--json"]);
129
+ const report = parseReport(result);
130
+ if (report === undefined) {
131
+ const diagnostic = result.stderr.trim() || "status unavailable";
132
+ ctx.ui.setWidget("keiyaku", [`Keiyaku · ${lineForWidth(diagnostic, 100)}`]);
133
+ } else ctx.ui.setWidget("keiyaku", [summary(report)]);
134
+ } catch {
135
+ ctx.ui.setWidget("keiyaku", ["Keiyaku · status unavailable"]);
136
+ }
133
137
  })().finally(() => {
134
138
  refreshInFlight = undefined;
135
139
  });
136
140
  await refreshInFlight;
137
141
  };
138
142
 
139
- pi.on("session_start", async (_event, ctx) => {
140
- await refresh(ctx);
143
+ const scheduleRefresh = (ctx: Pick<ExtensionContext, "hasUI" | "ui">): void => {
144
+ void refresh(ctx).catch(() => undefined);
145
+ };
146
+
147
+ pi.on("session_start", (_event, ctx) => {
148
+ scheduleRefresh(ctx);
141
149
  });
142
- pi.on("turn_end", async (_event, ctx) => {
143
- await refresh(ctx);
150
+ pi.on("agent_end", (_event, ctx) => {
151
+ scheduleRefresh(ctx);
144
152
  });
145
153
  pi.registerCommand("keiyaku", {
146
154
  description: "Open the Kanshi world status",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrosheep/keiyaku",
3
- "version": "4.5.2",
3
+ "version": "4.5.3",
4
4
  "files": [
5
5
  "build"
6
6
  ],