@geminilight/mindos 1.1.49 → 1.1.50

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.
Files changed (111) hide show
  1. package/dist/agent/prompt/agent-prompt.txt +26 -4
  2. package/dist/agent/runtime/adapter-contracts.d.ts +10 -0
  3. package/dist/agent/runtime/adapter-contracts.d.ts.map +1 -0
  4. package/dist/agent/runtime/adapter-contracts.js +111 -0
  5. package/dist/agent/runtime/adapter-contracts.js.map +1 -0
  6. package/dist/agent/runtime/compatibility.d.ts +12 -0
  7. package/dist/agent/runtime/compatibility.d.ts.map +1 -0
  8. package/dist/agent/runtime/compatibility.js +401 -0
  9. package/dist/agent/runtime/compatibility.js.map +1 -0
  10. package/dist/agent/runtime/descriptors.d.ts.map +1 -1
  11. package/dist/agent/runtime/descriptors.js +41 -3
  12. package/dist/agent/runtime/descriptors.js.map +1 -1
  13. package/dist/agent/runtime/detection.d.ts.map +1 -1
  14. package/dist/agent/runtime/detection.js +53 -0
  15. package/dist/agent/runtime/detection.js.map +1 -1
  16. package/dist/agent/runtime/index.d.ts +2 -0
  17. package/dist/agent/runtime/index.d.ts.map +1 -1
  18. package/dist/agent/runtime/index.js +2 -0
  19. package/dist/agent/runtime/index.js.map +1 -1
  20. package/dist/agent/runtime/lifecycle.d.ts +6 -0
  21. package/dist/agent/runtime/lifecycle.d.ts.map +1 -0
  22. package/dist/agent/runtime/lifecycle.js +311 -0
  23. package/dist/agent/runtime/lifecycle.js.map +1 -0
  24. package/dist/agent/runtime/registry.d.ts +108 -1
  25. package/dist/agent/runtime/registry.d.ts.map +1 -1
  26. package/dist/agent/runtime/registry.js.map +1 -1
  27. package/dist/agent/runtime/skill-runtime-matcher.d.ts +32 -0
  28. package/dist/agent/runtime/skill-runtime-matcher.d.ts.map +1 -0
  29. package/dist/agent/runtime/skill-runtime-matcher.js +380 -0
  30. package/dist/agent/runtime/skill-runtime-matcher.js.map +1 -0
  31. package/dist/agent/runtime/skill-runtime-requirements.d.ts +23 -0
  32. package/dist/agent/runtime/skill-runtime-requirements.d.ts.map +1 -0
  33. package/dist/agent/runtime/skill-runtime-requirements.js +15 -0
  34. package/dist/agent/runtime/skill-runtime-requirements.js.map +1 -0
  35. package/dist/agent/tool/capability-registry.js +2 -0
  36. package/dist/agent/tool/capability-registry.js.map +1 -1
  37. package/dist/agent/turn/index.d.ts.map +1 -1
  38. package/dist/agent/turn/index.js +7 -0
  39. package/dist/agent/turn/index.js.map +1 -1
  40. package/dist/protocols/acp/agent-descriptors.d.ts +31 -1
  41. package/dist/protocols/acp/agent-descriptors.d.ts.map +1 -1
  42. package/dist/protocols/acp/agent-descriptors.js +156 -10
  43. package/dist/protocols/acp/agent-descriptors.js.map +1 -1
  44. package/dist/protocols/acp/detect-local.d.ts +2 -1
  45. package/dist/protocols/acp/detect-local.d.ts.map +1 -1
  46. package/dist/protocols/acp/detect-local.js +4 -1
  47. package/dist/protocols/acp/detect-local.js.map +1 -1
  48. package/dist/protocols/acp/index.d.ts +2 -2
  49. package/dist/protocols/acp/index.d.ts.map +1 -1
  50. package/dist/protocols/acp/index.js +17 -17
  51. package/dist/protocols/acp/index.js.map +1 -1
  52. package/dist/protocols/acp/session.d.ts.map +1 -1
  53. package/dist/protocols/acp/session.js +5 -2
  54. package/dist/protocols/acp/session.js.map +1 -1
  55. package/dist/server/contract.d.ts.map +1 -1
  56. package/dist/server/contract.js +6 -0
  57. package/dist/server/contract.js.map +1 -1
  58. package/dist/server/handlers/acp.d.ts +10 -8
  59. package/dist/server/handlers/acp.d.ts.map +1 -1
  60. package/dist/server/handlers/acp.js +31 -36
  61. package/dist/server/handlers/acp.js.map +1 -1
  62. package/dist/server/handlers/agent-runtimes.d.ts +1 -1
  63. package/dist/server/handlers/agent-runtimes.d.ts.map +1 -1
  64. package/dist/server/handlers/agent-runtimes.js.map +1 -1
  65. package/dist/server/handlers/mcp-runtime-projections.d.ts +49 -0
  66. package/dist/server/handlers/mcp-runtime-projections.d.ts.map +1 -0
  67. package/dist/server/handlers/mcp-runtime-projections.js +216 -0
  68. package/dist/server/handlers/mcp-runtime-projections.js.map +1 -0
  69. package/dist/server/handlers/runtime-artifact-projections.d.ts +57 -0
  70. package/dist/server/handlers/runtime-artifact-projections.d.ts.map +1 -0
  71. package/dist/server/handlers/runtime-artifact-projections.js +147 -0
  72. package/dist/server/handlers/runtime-artifact-projections.js.map +1 -0
  73. package/dist/server/handlers/runtime-automation-projections.d.ts +49 -0
  74. package/dist/server/handlers/runtime-automation-projections.d.ts.map +1 -0
  75. package/dist/server/handlers/runtime-automation-projections.js +114 -0
  76. package/dist/server/handlers/runtime-automation-projections.js.map +1 -0
  77. package/dist/server/handlers/runtime-permission-projections.d.ts +71 -0
  78. package/dist/server/handlers/runtime-permission-projections.d.ts.map +1 -0
  79. package/dist/server/handlers/runtime-permission-projections.js +223 -0
  80. package/dist/server/handlers/runtime-permission-projections.js.map +1 -0
  81. package/dist/server/handlers/runtime-readiness.d.ts +67 -0
  82. package/dist/server/handlers/runtime-readiness.d.ts.map +1 -0
  83. package/dist/server/handlers/runtime-readiness.js +430 -0
  84. package/dist/server/handlers/runtime-readiness.js.map +1 -0
  85. package/dist/server/handlers/skill-links.d.ts +1 -1
  86. package/dist/server/handlers/skill-links.d.ts.map +1 -1
  87. package/dist/server/handlers/skill-links.js +17 -2
  88. package/dist/server/handlers/skill-links.js.map +1 -1
  89. package/dist/server/handlers/skill-metadata.d.ts +12 -0
  90. package/dist/server/handlers/skill-metadata.d.ts.map +1 -0
  91. package/dist/server/handlers/skill-metadata.js +179 -0
  92. package/dist/server/handlers/skill-metadata.js.map +1 -0
  93. package/dist/server/handlers/skill-runtime-matches.d.ts +25 -0
  94. package/dist/server/handlers/skill-runtime-matches.d.ts.map +1 -0
  95. package/dist/server/handlers/skill-runtime-matches.js +75 -0
  96. package/dist/server/handlers/skill-runtime-matches.js.map +1 -0
  97. package/dist/server/handlers/skills.d.ts +2 -0
  98. package/dist/server/handlers/skills.d.ts.map +1 -1
  99. package/dist/server/handlers/skills.js +8 -24
  100. package/dist/server/handlers/skills.js.map +1 -1
  101. package/dist/server/http.d.ts.map +1 -1
  102. package/dist/server/http.js +81 -4
  103. package/dist/server/http.js.map +1 -1
  104. package/dist/server/index.d.ts +10 -1
  105. package/dist/server/index.d.ts.map +1 -1
  106. package/dist/server/index.js +9 -0
  107. package/dist/server/index.js.map +1 -1
  108. package/dist/server/route-ownership.d.ts.map +1 -1
  109. package/dist/server/route-ownership.js +6 -0
  110. package/dist/server/route-ownership.js.map +1 -1
  111. package/package.json +9 -9
@@ -0,0 +1,49 @@
1
+ import type { AgentRuntimeCompatibilityOwner, AgentRuntimeCompatibilityRequirementStatus, AgentRuntimeDescriptor, AgentRuntimeKind, AgentRuntimeRemoteMode, AgentRuntimeStatus, AgentRuntimeUnattendedSupport } from '../../agent/runtime/registry.js';
2
+ import { type MindosServerResponse } from '../response.js';
3
+ export type AgentRuntimeAutomationProjectionStatus = 'ready' | 'remote-only' | 'limited' | 'blocked' | 'unknown';
4
+ export type AgentRuntimeAutomationReadinessStatus = 'ready' | 'limited' | 'blocked' | 'unknown';
5
+ export type AgentRuntimeAutomationProjectionReason = {
6
+ id: string;
7
+ status: AgentRuntimeCompatibilityRequirementStatus;
8
+ owner: AgentRuntimeCompatibilityOwner;
9
+ summary: string;
10
+ };
11
+ export type AgentRuntimeAutomationProjection = {
12
+ schemaVersion: 1;
13
+ runtimeId: string;
14
+ runtimeName: string;
15
+ runtimeKind: AgentRuntimeKind;
16
+ runtimeStatus: AgentRuntimeStatus;
17
+ status: AgentRuntimeAutomationProjectionStatus;
18
+ remoteControl: {
19
+ status: AgentRuntimeAutomationReadinessStatus;
20
+ supported: boolean;
21
+ mode: AgentRuntimeRemoteMode;
22
+ summary: string;
23
+ blockers?: string[];
24
+ };
25
+ unattendedAutomation: {
26
+ status: AgentRuntimeAutomationReadinessStatus;
27
+ supported: boolean;
28
+ support: AgentRuntimeUnattendedSupport;
29
+ summary: string;
30
+ blockers?: string[];
31
+ };
32
+ productPrerequisites: AgentRuntimeAutomationProjectionReason[];
33
+ reasons: AgentRuntimeAutomationProjectionReason[];
34
+ blockers?: string[];
35
+ };
36
+ export type AgentRuntimeAutomationProjectionsPayload = {
37
+ schemaVersion: 1;
38
+ projections: AgentRuntimeAutomationProjection[];
39
+ };
40
+ export type AgentRuntimeAutomationProjectionServices = {
41
+ listRuntimes(): AgentRuntimeDescriptor[] | Promise<AgentRuntimeDescriptor[]>;
42
+ };
43
+ export declare function handleAgentRuntimeAutomationProjectionsGet(searchParams: URLSearchParams, services: AgentRuntimeAutomationProjectionServices): Promise<MindosServerResponse<AgentRuntimeAutomationProjectionsPayload | {
44
+ error: string;
45
+ }>>;
46
+ export declare function buildAgentRuntimeAutomationProjectionsPayload(input: {
47
+ runtimes: AgentRuntimeDescriptor[];
48
+ }): AgentRuntimeAutomationProjectionsPayload;
49
+ //# sourceMappingURL=runtime-automation-projections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-automation-projections.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/runtime-automation-projections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,8BAA8B,EAC9B,0CAA0C,EAC1C,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,EAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEhF,MAAM,MAAM,sCAAsC,GAC9C,OAAO,GACP,aAAa,GACb,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,qCAAqC,GAC7C,OAAO,GACP,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,sCAAsC,GAAG;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,0CAA0C,CAAC;IACnD,KAAK,EAAE,8BAA8B,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,sCAAsC,CAAC;IAC/C,aAAa,EAAE;QACb,MAAM,EAAE,qCAAqC,CAAC;QAC9C,SAAS,EAAE,OAAO,CAAC;QACnB,IAAI,EAAE,sBAAsB,CAAC;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,oBAAoB,EAAE;QACpB,MAAM,EAAE,qCAAqC,CAAC;QAC9C,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,6BAA6B,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,oBAAoB,EAAE,sCAAsC,EAAE,CAAC;IAC/D,OAAO,EAAE,sCAAsC,EAAE,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAAG;IACrD,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,gCAAgC,EAAE,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAAG;IACrD,YAAY,IAAI,sBAAsB,EAAE,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;CAC9E,CAAC;AAEF,wBAAsB,0CAA0C,CAC9D,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,wCAAwC,GACjD,OAAO,CAAC,oBAAoB,CAAC,wCAAwC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAe7F;AAED,wBAAgB,6CAA6C,CAAC,KAAK,EAAE;IACnE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC,GAAG,wCAAwC,CAK3C"}
@@ -0,0 +1,114 @@
1
+ import { errorResponse, json } from '../response.js';
2
+ export async function handleAgentRuntimeAutomationProjectionsGet(searchParams, services) {
3
+ try {
4
+ const runtimes = await services.listRuntimes();
5
+ const payload = buildAgentRuntimeAutomationProjectionsPayload({ runtimes });
6
+ const runtimeFilter = searchParams.get('runtime')?.trim();
7
+ const projections = runtimeFilter
8
+ ? payload.projections.filter((projection) => projection.runtimeId === runtimeFilter || projection.runtimeKind === runtimeFilter)
9
+ : payload.projections;
10
+ return json({ ...payload, projections }, { headers: { 'Cache-Control': 'no-store' } });
11
+ }
12
+ catch (error) {
13
+ return errorResponse(error);
14
+ }
15
+ }
16
+ export function buildAgentRuntimeAutomationProjectionsPayload(input) {
17
+ return {
18
+ schemaVersion: 1,
19
+ projections: input.runtimes.map((runtime) => buildRuntimeAutomationProjection(runtime)),
20
+ };
21
+ }
22
+ function buildRuntimeAutomationProjection(runtime) {
23
+ const remoteAssessment = runtime.compatibility.scenarios['remote-control'];
24
+ const unattendedAssessment = runtime.compatibility.scenarios['unattended-automation'];
25
+ const runtimeUnavailable = runtime.status !== 'available';
26
+ const remoteStatus = runtimeUnavailable ? 'blocked' : levelToReadiness(remoteAssessment.level);
27
+ const unattendedStatus = runtimeUnavailable ? 'blocked' : levelToReadiness(unattendedAssessment.level);
28
+ const remoteSupported = !runtimeUnavailable && runtime.lifecycle.remote.supported;
29
+ const unattendedSupported = unattendedStatus === 'ready';
30
+ const productPrerequisites = buildProductPrerequisites(unattendedAssessment);
31
+ const blockers = uniqSorted([
32
+ ...(runtimeUnavailable ? ['runtime-available'] : []),
33
+ ...(remoteAssessment.blockers ?? []),
34
+ ...(unattendedAssessment.blockers ?? []),
35
+ ]);
36
+ return {
37
+ schemaVersion: 1,
38
+ runtimeId: runtime.runtimeId ?? runtime.id,
39
+ runtimeName: runtime.name,
40
+ runtimeKind: runtime.kind,
41
+ runtimeStatus: runtime.status,
42
+ status: resolveAutomationProjectionStatus({
43
+ runtime,
44
+ remoteSupported,
45
+ remoteStatus,
46
+ unattendedStatus,
47
+ }),
48
+ remoteControl: {
49
+ status: remoteStatus,
50
+ supported: remoteSupported,
51
+ mode: runtime.lifecycle.remote.mode,
52
+ summary: remoteAssessment.summary,
53
+ ...(remoteAssessment.blockers?.length ? { blockers: uniqSorted(remoteAssessment.blockers) } : {}),
54
+ },
55
+ unattendedAutomation: {
56
+ status: unattendedStatus,
57
+ supported: unattendedSupported,
58
+ support: runtime.lifecycle.remote.unattended,
59
+ summary: unattendedAssessment.summary,
60
+ ...(unattendedAssessment.blockers?.length ? { blockers: uniqSorted(unattendedAssessment.blockers) } : {}),
61
+ },
62
+ productPrerequisites,
63
+ reasons: [
64
+ runtimeAvailableReason(runtime),
65
+ reason('server-runnable', remoteSupported ? 'satisfied' : runtimeUnavailable ? 'unknown' : 'missing', runtime.kind === 'mindos' ? 'mindos' : 'external', remoteSupported
66
+ ? `${runtime.name} can run on the MindOS server host according to its lifecycle descriptor.`
67
+ : `${runtime.name} is not server-runnable through the current lifecycle descriptor.`),
68
+ reason('remote-control-surface', remoteStatus === 'ready' ? 'satisfied' : remoteStatus === 'limited' ? 'external' : remoteStatus === 'blocked' ? 'missing' : 'unknown', 'shared', 'Remote control also depends on an authenticated product surface, reachable runtime host, and reachable permission prompts.'),
69
+ reason('unattended-automation', unattendedStatus === 'ready' ? 'satisfied' : unattendedStatus === 'limited' ? 'missing' : unattendedStatus === 'blocked' ? 'missing' : 'unknown', 'shared', unattendedAssessment.summary),
70
+ ...productPrerequisites,
71
+ ],
72
+ ...(blockers.length > 0 ? { blockers } : {}),
73
+ };
74
+ }
75
+ function buildProductPrerequisites(unattendedAssessment) {
76
+ return [
77
+ prerequisiteReason(unattendedAssessment, 'scheduler', 'A durable scheduler must create, retry, and recover background turns.'),
78
+ prerequisiteReason(unattendedAssessment, 'approval-routing', 'Permission prompts need an unattended-safe approval route.'),
79
+ prerequisiteReason(unattendedAssessment, 'wake-resume', 'MindOS must wake, resume, and reconcile missed triggers.'),
80
+ prerequisiteReason(unattendedAssessment, 'failure-audit', 'Failed or partial background work needs a user-visible audit trail.'),
81
+ ];
82
+ }
83
+ function prerequisiteReason(assessment, id, fallbackSummary) {
84
+ const requirement = assessment.requirements.find((entry) => entry.id === id);
85
+ return reason(id, requirement?.status ?? 'unknown', requirement?.owner ?? 'shared', requirement?.summary ?? fallbackSummary);
86
+ }
87
+ function resolveAutomationProjectionStatus(input) {
88
+ if (input.runtime.status !== 'available')
89
+ return 'blocked';
90
+ if (input.remoteStatus === 'ready' && input.unattendedStatus === 'ready')
91
+ return 'ready';
92
+ if (input.remoteSupported && (input.unattendedStatus === 'blocked' || input.unattendedStatus === 'unknown'))
93
+ return 'remote-only';
94
+ if (input.remoteSupported || input.unattendedStatus === 'limited')
95
+ return 'limited';
96
+ if (input.remoteStatus === 'blocked' && input.unattendedStatus === 'blocked')
97
+ return 'blocked';
98
+ return 'unknown';
99
+ }
100
+ function levelToReadiness(level) {
101
+ return level;
102
+ }
103
+ function runtimeAvailableReason(runtime) {
104
+ return reason('runtime-available', runtime.status === 'available' ? 'satisfied' : 'missing', runtime.status === 'available' ? 'mindos' : 'shared', runtime.status === 'available'
105
+ ? `${runtime.name} is available for remote and automation diagnostics.`
106
+ : `${runtime.name} is not available, so remote and 24/7 readiness cannot be trusted.`);
107
+ }
108
+ function reason(id, status, owner, summary) {
109
+ return { id, status, owner, summary };
110
+ }
111
+ function uniqSorted(values) {
112
+ return [...new Set(values)].sort();
113
+ }
114
+ //# sourceMappingURL=runtime-automation-projections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-automation-projections.js","sourceRoot":"","sources":["../../../src/server/handlers/runtime-automation-projections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { type MindosAgentPermissionPolicy } from '../../agent/mindos-pi/permission/policy.js';
2
+ import { type MindosPermissionMode } from '../../agent/permission/index.js';
3
+ import type { AgentRuntimeCompatibilityOwner, AgentRuntimeCompatibilityRequirementStatus, AgentRuntimeDescriptor, AgentRuntimeKind, AgentRuntimeOwner, AgentRuntimeStatus } from '../../agent/runtime/registry.js';
4
+ import { type MindosServerResponse } from '../response.js';
5
+ export type AgentRuntimePermissionProjectionStatus = 'ready' | 'interactive-only' | 'limited' | 'blocked' | 'unknown';
6
+ export type AgentRuntimePermissionApprovalRoute = 'mindos-policy' | 'runtime-permission-bridge' | 'external-runtime' | 'adapter-protocol' | 'none' | 'unknown';
7
+ export type AgentRuntimePermissionUnattendedStatus = 'ready' | 'limited' | 'blocked' | 'unknown';
8
+ export type AgentRuntimePermissionProjectionReason = {
9
+ id: string;
10
+ status: AgentRuntimeCompatibilityRequirementStatus;
11
+ owner: AgentRuntimeCompatibilityOwner;
12
+ summary: string;
13
+ };
14
+ export type AgentRuntimePermissionPolicyProjection = {
15
+ permissionMode: MindosPermissionMode;
16
+ runtimePermissionMode: MindosAgentPermissionPolicy['runtimePermissionMode'];
17
+ acpPermissionMode: MindosAgentPermissionPolicy['acpPermissionMode'];
18
+ kbRead: boolean;
19
+ kbWrite: MindosAgentPermissionPolicy['toolScope']['kbWrite'];
20
+ terminal: boolean;
21
+ mcp: boolean;
22
+ subagents: boolean;
23
+ delegation: boolean;
24
+ im: boolean;
25
+ schedule: boolean;
26
+ userExtensions: boolean;
27
+ extensionScopes: string[];
28
+ };
29
+ export type AgentRuntimePermissionProjection = {
30
+ schemaVersion: 1;
31
+ runtimeId: string;
32
+ runtimeName: string;
33
+ runtimeKind: AgentRuntimeKind;
34
+ runtimeStatus: AgentRuntimeStatus;
35
+ permissionOwner: AgentRuntimeOwner;
36
+ requestedPermissionMode: MindosPermissionMode;
37
+ status: AgentRuntimePermissionProjectionStatus;
38
+ harnessPermissionModel: 'mindos-only' | 'runtime-bridged' | 'none' | 'unknown';
39
+ interactiveApproval: {
40
+ supported: boolean;
41
+ route: AgentRuntimePermissionApprovalRoute;
42
+ scope: 'turn-policy' | 'in-process-run' | 'runtime-native' | 'adapter-specific' | 'none' | 'unknown';
43
+ summary: string;
44
+ };
45
+ unattendedApproval: {
46
+ status: AgentRuntimePermissionUnattendedStatus;
47
+ supported: boolean;
48
+ summary: string;
49
+ blockers?: string[];
50
+ };
51
+ policy?: AgentRuntimePermissionPolicyProjection;
52
+ policyModes?: AgentRuntimePermissionPolicyProjection[];
53
+ reasons: AgentRuntimePermissionProjectionReason[];
54
+ blockers?: string[];
55
+ };
56
+ export type AgentRuntimePermissionProjectionsPayload = {
57
+ schemaVersion: 1;
58
+ requestedPermissionMode: MindosPermissionMode;
59
+ projections: AgentRuntimePermissionProjection[];
60
+ };
61
+ export type AgentRuntimePermissionProjectionServices = {
62
+ listRuntimes(): AgentRuntimeDescriptor[] | Promise<AgentRuntimeDescriptor[]>;
63
+ };
64
+ export declare function handleAgentRuntimePermissionProjectionsGet(searchParams: URLSearchParams, services: AgentRuntimePermissionProjectionServices): Promise<MindosServerResponse<AgentRuntimePermissionProjectionsPayload | {
65
+ error: string;
66
+ }>>;
67
+ export declare function buildAgentRuntimePermissionProjectionsPayload(input: {
68
+ runtimes: AgentRuntimeDescriptor[];
69
+ permissionMode?: MindosPermissionMode;
70
+ }): AgentRuntimePermissionProjectionsPayload;
71
+ //# sourceMappingURL=runtime-permission-projections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-permission-projections.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/runtime-permission-projections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ import { createMindosAgentPermissionPolicy, } from '../../agent/mindos-pi/permission/policy.js';
2
+ import { isMindosPermissionMode, MINDOS_PERMISSION_MODES, } from '../../agent/permission/index.js';
3
+ import { errorResponse, json } from '../response.js';
4
+ export async function handleAgentRuntimePermissionProjectionsGet(searchParams, services) {
5
+ const permissionModeResult = parsePermissionMode(searchParams.get('permissionMode'));
6
+ if ('error' in permissionModeResult)
7
+ return json({ error: permissionModeResult.error }, { status: 400 });
8
+ try {
9
+ const runtimes = await services.listRuntimes();
10
+ const payload = buildAgentRuntimePermissionProjectionsPayload({
11
+ runtimes,
12
+ permissionMode: permissionModeResult.permissionMode,
13
+ });
14
+ const runtimeFilter = searchParams.get('runtime')?.trim();
15
+ const projections = runtimeFilter
16
+ ? payload.projections.filter((projection) => projection.runtimeId === runtimeFilter || projection.runtimeKind === runtimeFilter)
17
+ : payload.projections;
18
+ return json({ ...payload, projections }, { headers: { 'Cache-Control': 'no-store' } });
19
+ }
20
+ catch (error) {
21
+ return errorResponse(error);
22
+ }
23
+ }
24
+ export function buildAgentRuntimePermissionProjectionsPayload(input) {
25
+ const requestedPermissionMode = input.permissionMode ?? 'ask';
26
+ return {
27
+ schemaVersion: 1,
28
+ requestedPermissionMode,
29
+ projections: input.runtimes.map((runtime) => buildRuntimePermissionProjection(runtime, requestedPermissionMode)),
30
+ };
31
+ }
32
+ function buildRuntimePermissionProjection(runtime, requestedPermissionMode) {
33
+ if (runtime.kind === 'mindos')
34
+ return buildMindosPermissionProjection(runtime, requestedPermissionMode);
35
+ if (runtime.kind === 'codex' || runtime.kind === 'claude') {
36
+ return buildNativePermissionProjection(runtime, requestedPermissionMode);
37
+ }
38
+ return buildAcpPermissionProjection(runtime, requestedPermissionMode);
39
+ }
40
+ function buildMindosPermissionProjection(runtime, requestedPermissionMode) {
41
+ const policy = createMindosAgentPermissionPolicy(requestedPermissionMode);
42
+ const policyProjection = projectMindosPolicy(policy);
43
+ const reasons = [
44
+ runtimeAvailableReason(runtime),
45
+ reason('permission-owner', 'satisfied', 'mindos', 'MindOS owns permission policy inside the Pi runtime lane.'),
46
+ reason('turn-policy', 'satisfied', 'mindos', 'The selected read/ask/auto/full mode maps to a deterministic Pi tool policy.'),
47
+ ];
48
+ const blockers = [];
49
+ const unattended = mindosUnattendedApproval(requestedPermissionMode, policyProjection);
50
+ if (unattended.blockers)
51
+ blockers.push(...unattended.blockers);
52
+ if (runtime.status !== 'available')
53
+ blockers.push('runtime-available');
54
+ return {
55
+ schemaVersion: 1,
56
+ runtimeId: runtime.runtimeId ?? runtime.id,
57
+ runtimeName: runtime.name,
58
+ runtimeKind: runtime.kind,
59
+ runtimeStatus: runtime.status,
60
+ permissionOwner: runtime.permissionOwner,
61
+ requestedPermissionMode,
62
+ status: runtime.status === 'available' ? 'ready' : 'blocked',
63
+ harnessPermissionModel: 'mindos-only',
64
+ interactiveApproval: {
65
+ supported: true,
66
+ route: 'mindos-policy',
67
+ scope: 'turn-policy',
68
+ summary: 'MindOS applies a deterministic per-turn policy before Pi tools and extensions are registered.',
69
+ },
70
+ unattendedApproval: unattended,
71
+ policy: policyProjection,
72
+ policyModes: MINDOS_PERMISSION_MODES.map((mode) => projectMindosPolicy(createMindosAgentPermissionPolicy(mode))),
73
+ reasons,
74
+ ...(blockers.length > 0 ? { blockers: uniqSorted(blockers) } : {}),
75
+ };
76
+ }
77
+ function buildNativePermissionProjection(runtime, requestedPermissionMode) {
78
+ const hasPermissionStream = runtime.harnessCapabilities?.eventStream.includes('permissions') === true;
79
+ const supportsApprovals = runtime.capabilities.supportsApprovals && hasPermissionStream;
80
+ const blockers = [];
81
+ if (runtime.status !== 'available')
82
+ blockers.push('runtime-available');
83
+ if (!supportsApprovals)
84
+ blockers.push('runtime-approval-contract');
85
+ blockers.push('durable-approval-queue', 'approval-timeout-recovery');
86
+ const status = runtime.status !== 'available'
87
+ ? 'blocked'
88
+ : supportsApprovals ? 'interactive-only' : 'unknown';
89
+ return {
90
+ schemaVersion: 1,
91
+ runtimeId: runtime.runtimeId ?? runtime.id,
92
+ runtimeName: runtime.name,
93
+ runtimeKind: runtime.kind,
94
+ runtimeStatus: runtime.status,
95
+ permissionOwner: runtime.permissionOwner,
96
+ requestedPermissionMode,
97
+ status,
98
+ harnessPermissionModel: runtime.harnessCapabilities?.permissions ?? 'unknown',
99
+ interactiveApproval: {
100
+ supported: supportsApprovals,
101
+ route: supportsApprovals ? 'runtime-permission-bridge' : 'external-runtime',
102
+ scope: supportsApprovals ? 'in-process-run' : 'runtime-native',
103
+ summary: supportsApprovals
104
+ ? 'MindOS can surface native runtime permission prompts while the run is active, using the runtime permission bridge.'
105
+ : 'MindOS does not have a declared interactive permission bridge for this runtime.',
106
+ },
107
+ unattendedApproval: {
108
+ status: runtime.status === 'available' && supportsApprovals ? 'limited' : 'unknown',
109
+ supported: false,
110
+ summary: 'Native runtime approvals are currently interactive and in-process; unattended work needs a durable approval queue and timeout recovery.',
111
+ blockers: ['durable-approval-queue', 'approval-timeout-recovery'],
112
+ },
113
+ reasons: [
114
+ runtimeAvailableReason(runtime),
115
+ reason('runtime-approval-contract', supportsApprovals ? 'satisfied' : 'unknown', 'external', supportsApprovals
116
+ ? `${runtime.name} declares permission events that MindOS can bridge into the product stream.`
117
+ : `${runtime.name} has not declared a bridgeable permission event stream.`),
118
+ reason('mindos-permission-bridge', supportsApprovals ? 'satisfied' : 'unknown', 'mindos', 'MindOS routes supported native permission requests through an in-process run bridge.'),
119
+ reason('durable-approval-queue', 'missing', 'mindos', 'Approvals are not persisted in a durable queue for headless or resumed runs yet.'),
120
+ ],
121
+ blockers: uniqSorted(blockers),
122
+ };
123
+ }
124
+ function buildAcpPermissionProjection(runtime, requestedPermissionMode) {
125
+ const blockers = runtime.status === 'available'
126
+ ? ['adapter-approval-contract']
127
+ : ['runtime-available', 'adapter-approval-contract'];
128
+ return {
129
+ schemaVersion: 1,
130
+ runtimeId: runtime.runtimeId ?? runtime.id,
131
+ runtimeName: runtime.name,
132
+ runtimeKind: runtime.kind,
133
+ runtimeStatus: runtime.status,
134
+ permissionOwner: runtime.permissionOwner,
135
+ requestedPermissionMode,
136
+ status: runtime.status === 'available' ? 'unknown' : 'blocked',
137
+ harnessPermissionModel: runtime.harnessCapabilities?.permissions ?? 'unknown',
138
+ interactiveApproval: {
139
+ supported: false,
140
+ route: 'unknown',
141
+ scope: 'adapter-specific',
142
+ summary: 'Generic ACP descriptors do not expose a shared approval prompt contract yet.',
143
+ },
144
+ unattendedApproval: {
145
+ status: 'unknown',
146
+ supported: false,
147
+ summary: 'ACP unattended approval readiness depends on adapter-specific permission semantics.',
148
+ blockers: ['adapter-approval-contract'],
149
+ },
150
+ reasons: [
151
+ runtimeAvailableReason(runtime),
152
+ reason('adapter-approval-contract', 'unknown', 'external', 'ACP adapters need to declare approval behavior before MindOS can route or preauthorize actions safely.'),
153
+ ],
154
+ blockers,
155
+ };
156
+ }
157
+ function mindosUnattendedApproval(mode, policy) {
158
+ if (mode === 'read') {
159
+ return {
160
+ status: 'ready',
161
+ supported: true,
162
+ summary: 'Read mode has no write, terminal, MCP, IM, schedule, or user-extension scopes, so permission does not require live approval.',
163
+ };
164
+ }
165
+ if (mode === 'ask') {
166
+ return {
167
+ status: 'limited',
168
+ supported: false,
169
+ summary: 'Ask mode is safe for interactive work, but unattended use needs a durable approval queue before user decisions can survive background execution.',
170
+ blockers: ['durable-approval-queue'],
171
+ };
172
+ }
173
+ const highRisk = [
174
+ ...(policy.terminal ? ['terminal'] : []),
175
+ ...(policy.mcp ? ['mcp'] : []),
176
+ ...(policy.userExtensions ? ['user-extensions'] : []),
177
+ ...(policy.im ? ['im'] : []),
178
+ ...(policy.schedule ? ['schedule'] : []),
179
+ ...(policy.delegation ? ['delegation'] : []),
180
+ ];
181
+ return {
182
+ status: 'limited',
183
+ supported: false,
184
+ summary: `${mode} mode preauthorizes product actions without live prompts; unattended use needs scenario-specific allowlists and audit before it is trustworthy.`,
185
+ blockers: uniqSorted(['unattended-policy-review', ...highRisk.map((item) => `high-risk:${item}`)]),
186
+ };
187
+ }
188
+ function projectMindosPolicy(policy) {
189
+ return {
190
+ permissionMode: policy.permissionMode,
191
+ runtimePermissionMode: policy.runtimePermissionMode,
192
+ acpPermissionMode: policy.acpPermissionMode,
193
+ kbRead: policy.toolScope.kbRead,
194
+ kbWrite: policy.toolScope.kbWrite,
195
+ terminal: policy.toolScope.terminal,
196
+ mcp: policy.toolScope.mcp,
197
+ subagents: policy.toolScope.subagents,
198
+ delegation: policy.toolScope.acpDelegation || policy.toolScope.a2aDelegation,
199
+ im: policy.toolScope.im,
200
+ schedule: policy.toolScope.schedule,
201
+ userExtensions: policy.toolScope.userExtensions,
202
+ extensionScopes: [...policy.extensionScopes],
203
+ };
204
+ }
205
+ function runtimeAvailableReason(runtime) {
206
+ return reason('runtime-available', runtime.status === 'available' ? 'satisfied' : 'missing', runtime.status === 'available' ? 'mindos' : 'shared', runtime.status === 'available'
207
+ ? `${runtime.name} is available for permission projection diagnostics.`
208
+ : `${runtime.name} is not available, so permission readiness cannot be trusted.`);
209
+ }
210
+ function reason(id, status, owner, summary) {
211
+ return { id, status, owner, summary };
212
+ }
213
+ function parsePermissionMode(value) {
214
+ if (!value)
215
+ return { permissionMode: 'ask' };
216
+ if (isMindosPermissionMode(value))
217
+ return { permissionMode: value };
218
+ return { error: `Unsupported permissionMode: ${value}` };
219
+ }
220
+ function uniqSorted(values) {
221
+ return Array.from(new Set(values.map((value) => value.trim()).filter(Boolean))).sort();
222
+ }
223
+ //# sourceMappingURL=runtime-permission-projections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-permission-projections.js","sourceRoot":"","sources":["../../../src/server/handlers/runtime-permission-projections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { type MindosPermissionMode } from '../../agent/permission/index.js';
2
+ import type { AgentRuntimeCompatibilityOwner, AgentRuntimeCompatibilityRequirementStatus, AgentRuntimeCompatibilityScenario, AgentRuntimeDescriptor, AgentRuntimeKind, AgentRuntimeStatus } from '../../agent/runtime/registry.js';
3
+ import { type MindosServerResponse } from '../response.js';
4
+ import { buildAgentRuntimeMcpProjectionsPayload, type AgentRuntimeMcpProjectionServices } from './mcp-runtime-projections.js';
5
+ export type AgentRuntimeReadinessStatus = 'ready' | 'usable' | 'limited' | 'blocked' | 'unknown';
6
+ export type AgentRuntimeReadinessSource = 'compatibility-profile' | 'permission-projection' | 'mcp-projection' | 'artifact-projection' | 'automation-projection';
7
+ export type AgentRuntimeReadinessGapCategory = 'mindos-product' | 'runtime-native' | 'adapter-contract' | 'deployment' | 'user-setup' | 'shared';
8
+ export type AgentRuntimeReadinessGapSeverity = 'info' | 'warning' | 'blocking';
9
+ export type AgentRuntimeReadinessRequirement = {
10
+ id: string;
11
+ status: AgentRuntimeCompatibilityRequirementStatus;
12
+ owner: AgentRuntimeCompatibilityOwner;
13
+ summary: string;
14
+ };
15
+ export type AgentRuntimeReadinessUseCase = {
16
+ id: AgentRuntimeCompatibilityScenario;
17
+ label: string;
18
+ status: AgentRuntimeReadinessStatus;
19
+ source: AgentRuntimeReadinessSource;
20
+ sourceStatus: string;
21
+ owner: AgentRuntimeCompatibilityOwner;
22
+ summary: string;
23
+ requirements: AgentRuntimeReadinessRequirement[];
24
+ blockers?: string[];
25
+ details?: Record<string, unknown>;
26
+ };
27
+ export type AgentRuntimeReadinessRecommendation = {
28
+ useCase: AgentRuntimeCompatibilityScenario;
29
+ confidence: 'strong' | 'conditional';
30
+ summary: string;
31
+ };
32
+ export type AgentRuntimeReadinessGap = {
33
+ id: string;
34
+ category: AgentRuntimeReadinessGapCategory;
35
+ severity: AgentRuntimeReadinessGapSeverity;
36
+ summary: string;
37
+ useCases: AgentRuntimeCompatibilityScenario[];
38
+ };
39
+ export type AgentRuntimeReadinessProjection = {
40
+ schemaVersion: 1;
41
+ runtimeId: string;
42
+ runtimeName: string;
43
+ runtimeKind: AgentRuntimeKind;
44
+ runtimeStatus: AgentRuntimeStatus;
45
+ overallStatus: AgentRuntimeReadinessStatus;
46
+ summary: string;
47
+ recommendations: AgentRuntimeReadinessRecommendation[];
48
+ useCases: AgentRuntimeReadinessUseCase[];
49
+ gaps: AgentRuntimeReadinessGap[];
50
+ blockers?: string[];
51
+ };
52
+ export type AgentRuntimeReadinessPayload = {
53
+ schemaVersion: 1;
54
+ requestedPermissionMode: MindosPermissionMode;
55
+ projections: AgentRuntimeReadinessProjection[];
56
+ };
57
+ export type AgentRuntimeReadinessServices = AgentRuntimeMcpProjectionServices;
58
+ export declare function handleAgentRuntimeReadinessGet(searchParams: URLSearchParams, services: AgentRuntimeReadinessServices): Promise<MindosServerResponse<AgentRuntimeReadinessPayload | {
59
+ error: string;
60
+ }>>;
61
+ export declare function buildAgentRuntimeReadinessPayload(input: {
62
+ runtimes: AgentRuntimeDescriptor[];
63
+ mcpAgents: Parameters<typeof buildAgentRuntimeMcpProjectionsPayload>[0]['mcpAgents'];
64
+ mindosMcpConfig?: Parameters<typeof buildAgentRuntimeMcpProjectionsPayload>[0]['mindosMcpConfig'];
65
+ permissionMode?: MindosPermissionMode;
66
+ }): AgentRuntimeReadinessPayload;
67
+ //# sourceMappingURL=runtime-readiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-readiness.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/runtime-readiness.ts"],"names":[],"mappings":"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"}