@themoltnet/pi-runtime 0.9.0 → 0.10.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/dist/index.d.ts CHANGED
@@ -849,6 +849,12 @@ export declare interface MoltNetToolsConfig {
849
849
  * entry creation behaves as before (env-derived diary, no auto-tags).
850
850
  */
851
851
  getTaskContext?(): MoltNetTaskContext | null;
852
+ /** Records recoverable task-provenance failures without ending the task. */
853
+ onTaskProvenanceEvent?(event: 'task.provenance.entry_denied', details: {
854
+ taskId: string;
855
+ diaryId: string;
856
+ error: string;
857
+ }): void | Promise<void>;
852
858
  }
853
859
 
854
860
  export declare function normalizeRetryTriageResult(value: unknown): PiRetryTriageResult;
package/dist/index.js CHANGED
@@ -678,13 +678,27 @@ function createMoltNetTools(config) {
678
678
  } else targetDiaryId = params.diaryId ?? envDiaryId;
679
679
  const userTags = params.tags ?? [];
680
680
  const mergedTags = autoTags.length ? [...autoTags, ...userTags.filter((t) => !autoTags.includes(t))] : userTags;
681
- const entry = await agent.entries.create(targetDiaryId, {
682
- title: params.title,
683
- content: params.content,
684
- tags: mergedTags,
685
- importance: params.importance ?? 5,
686
- ...params.entryType ? { entryType: params.entryType } : {}
687
- });
681
+ let entry;
682
+ try {
683
+ entry = await agent.entries.create(targetDiaryId, {
684
+ title: params.title,
685
+ content: params.content,
686
+ tags: mergedTags,
687
+ importance: params.importance ?? 5,
688
+ ...params.entryType ? { entryType: params.entryType } : {}
689
+ });
690
+ } catch (error) {
691
+ const message = error instanceof Error ? error.message : String(error);
692
+ if (taskCtx && /\b403\b|forbidden|not authorized|permission/i.test(message)) {
693
+ await config.onTaskProvenanceEvent?.("task.provenance.entry_denied", {
694
+ taskId: taskCtx.taskId,
695
+ diaryId: targetDiaryId,
696
+ error: message
697
+ });
698
+ throw new Error(`entries_create: the task provenance diary denied this entry. The diary may have moved to another team or its grants may have changed. The task and runtime session remain active; ask a diary manager to restore write access, then retry. (${message})`, { cause: error });
699
+ }
700
+ throw error;
701
+ }
688
702
  return {
689
703
  content: [{
690
704
  type: "text",
@@ -2139,6 +2153,23 @@ var DiaryGrantResponseSchema = Type$1.Object({
2139
2153
  });
2140
2154
  Type$1.Object({ grants: Type$1.Array(DiaryGrantResponseSchema) });
2141
2155
  Type$1.Object({ revoked: Type$1.Boolean() });
2156
+ var TaskGrantRoleSchema = Type$1.Union([Type$1.Literal("writer"), Type$1.Literal("manager")]);
2157
+ Type$1.Object({
2158
+ subjectId: UuidSchema,
2159
+ subjectNs: GrantSubjectNsSchema,
2160
+ role: TaskGrantRoleSchema
2161
+ });
2162
+ Type$1.Object({
2163
+ subjectId: UuidSchema,
2164
+ subjectNs: GrantSubjectNsSchema,
2165
+ role: TaskGrantRoleSchema
2166
+ });
2167
+ var TaskGrantResponseSchema = Type$1.Object({
2168
+ subjectId: UuidSchema,
2169
+ subjectNs: GrantSubjectNsSchema,
2170
+ role: TaskGrantRoleSchema
2171
+ });
2172
+ Type$1.Object({ grants: Type$1.Array(TaskGrantResponseSchema) });
2142
2173
  Type$1.Object({ "x-moltnet-team-id": Type$1.String({
2143
2174
  format: "uuid",
2144
2175
  description: "Team ID (UUID) that will own the resource. Required."
@@ -7662,6 +7693,11 @@ async function executePiTask(claimedTask, reporter, opts) {
7662
7693
  attemptN,
7663
7694
  diaryId,
7664
7695
  correlationId: task.correlationId ?? null
7696
+ }),
7697
+ onTaskProvenanceEvent: (event, details) => emit("info", {
7698
+ event,
7699
+ severity: "warn",
7700
+ ...details
7665
7701
  })
7666
7702
  });
7667
7703
  const piAuthDir = resolvePiCodingAgentDir();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@themoltnet/pi-runtime",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "Composable MoltNet runtime kernel for Pi agents in Gondolin VMs",
@@ -31,9 +31,9 @@
31
31
  "@opentelemetry/api": "^1.9.0",
32
32
  "multiformats": "^13.3.0",
33
33
  "typebox": "^1.2.8",
34
- "@themoltnet/agent-runtime": "0.42.0",
34
+ "@themoltnet/agent-runtime": "0.43.0",
35
35
  "@themoltnet/os-keyring": "0.2.0",
36
- "@themoltnet/sdk": "0.133.0",
36
+ "@themoltnet/sdk": "0.134.0",
37
37
  "@themoltnet/shell-command-analyzer": "0.3.0"
38
38
  },
39
39
  "peerDependencies": {
@@ -51,9 +51,9 @@
51
51
  "vite": "^8.0.0",
52
52
  "vite-plugin-dts": "^4.5.4",
53
53
  "vitest": "^3.0.0",
54
+ "@moltnet/crypto-service": "0.1.0",
54
55
  "@moltnet/models": "0.1.0",
55
- "@moltnet/tasks": "0.1.0",
56
- "@moltnet/crypto-service": "0.1.0"
56
+ "@moltnet/tasks": "0.1.0"
57
57
  },
58
58
  "engines": {
59
59
  "node": ">=24"