@diffexai/diffex 0.3.0 → 0.3.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.
Files changed (96) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/cli/args.d.ts +2 -0
  3. package/dist/cli/args.js +39 -0
  4. package/dist/core/agent-session-services.d.ts +1 -0
  5. package/dist/core/agent-session-services.js +1 -0
  6. package/dist/core/agent-session.d.ts +4 -5
  7. package/dist/core/agent-session.js +11 -62
  8. package/dist/core/compaction/branch-summarization.js +3 -2
  9. package/dist/core/compaction/compaction.js +9 -7
  10. package/dist/core/compaction/utils.d.ts +3 -0
  11. package/dist/core/compaction/utils.js +21 -0
  12. package/dist/core/current-plan-state.d.ts +3 -2
  13. package/dist/core/current-plan-state.js +23 -6
  14. package/dist/core/plan-snapshot.d.ts +3 -0
  15. package/dist/core/plan-snapshot.js +23 -0
  16. package/dist/core/sdk.d.ts +3 -0
  17. package/dist/core/sdk.js +1 -0
  18. package/dist/core/session-manager.js +21 -1
  19. package/dist/core/subagents/services.d.ts +2 -0
  20. package/dist/core/subagents/services.js +2 -0
  21. package/dist/core/tools/bash.js +47 -12
  22. package/dist/core/tools/update-plan.d.ts +27 -6
  23. package/dist/core/tools/update-plan.js +122 -18
  24. package/dist/index.d.ts +1 -0
  25. package/dist/main.js +4 -0
  26. package/dist/modes/interactive/components/footer.js +16 -5
  27. package/dist/modes/interactive/components/tool-group.d.ts +1 -0
  28. package/dist/modes/interactive/components/tool-group.js +26 -7
  29. package/dist/modes/print-mode.js +16 -13
  30. package/dist/node_modules/@diffexai/diffex-agent-core/dist/agent-loop.js +21 -3
  31. package/dist/node_modules/@diffexai/diffex-agent-core/dist/types.d.ts +17 -10
  32. package/dist/node_modules/@diffexai/diffex-agent-core/distribution-components.json +4 -4
  33. package/dist/node_modules/@diffexai/diffex-agent-core/distribution-files.json +3 -3
  34. package/dist/node_modules/@diffexai/diffex-agent-core/package.json +1 -1
  35. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/.manifest.json +1 -1
  36. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/amazon-bedrock.json +1 -1
  37. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/anthropic.json +1 -1
  38. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/azure-openai-responses.json +1 -1
  39. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/cerebras.json +1 -1
  40. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  41. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/cloudflare-workers-ai.json +1 -1
  42. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/fireworks.json +1 -1
  43. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/github-copilot.json +1 -1
  44. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/google-vertex.json +1 -1
  45. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/google.json +1 -1
  46. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/huggingface.json +1 -1
  47. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/minimax-cn.json +1 -1
  48. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/minimax.json +1 -1
  49. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/mistral.json +1 -1
  50. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/moonshotai-cn.json +1 -1
  51. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/moonshotai.json +1 -1
  52. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/nvidia.json +1 -1
  53. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/openai.json +1 -1
  54. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/opencode-go.json +1 -1
  55. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/opencode.json +1 -1
  56. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/openrouter.json +1 -1
  57. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/together.json +1 -1
  58. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  59. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/xai.json +1 -1
  60. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
  61. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
  62. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
  63. package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/xiaomi.json +1 -1
  64. package/dist/node_modules/@diffexai/diffex-ai/distribution-components.json +3 -3
  65. package/dist/node_modules/@diffexai/diffex-ai/distribution-files.json +30 -30
  66. package/dist/node_modules/@diffexai/diffex-ai/package.json +1 -1
  67. package/dist/node_modules/@diffexai/diffex-client/distribution-components.json +3 -3
  68. package/dist/node_modules/@diffexai/diffex-client/distribution-files.json +1 -1
  69. package/dist/node_modules/@diffexai/diffex-client/package.json +1 -1
  70. package/dist/node_modules/@diffexai/diffex-harness-state/distribution-components.json +2 -2
  71. package/dist/node_modules/@diffexai/diffex-harness-state/distribution-files.json +1 -1
  72. package/dist/node_modules/@diffexai/diffex-harness-state/package.json +1 -1
  73. package/dist/node_modules/@diffexai/diffex-protocol/distribution-components.json +2 -2
  74. package/dist/node_modules/@diffexai/diffex-protocol/distribution-files.json +1 -1
  75. package/dist/node_modules/@diffexai/diffex-protocol/package.json +1 -1
  76. package/dist/node_modules/@diffexai/diffex-telemetry/distribution-components.json +2 -2
  77. package/dist/node_modules/@diffexai/diffex-telemetry/distribution-files.json +1 -1
  78. package/dist/node_modules/@diffexai/diffex-telemetry/package.json +1 -1
  79. package/dist/node_modules/@diffexai/diffex-tui/distribution-components.json +2 -2
  80. package/dist/node_modules/@diffexai/diffex-tui/distribution-files.json +1 -1
  81. package/dist/node_modules/@diffexai/diffex-tui/package.json +1 -1
  82. package/dist/utils/child-process.d.ts +5 -1
  83. package/dist/utils/child-process.js +9 -1
  84. package/dist/utils/owned-shell-processes.d.ts +23 -2
  85. package/dist/utils/owned-shell-processes.js +149 -39
  86. package/dist/utils/shell-process-identity.d.ts +11 -0
  87. package/dist/utils/shell-process-identity.js +61 -0
  88. package/dist/utils/shell.d.ts +1 -1
  89. package/dist/utils/shell.js +5 -5
  90. package/distribution-components.json +11 -11
  91. package/distribution-files.json +101 -85
  92. package/npm-shrinkwrap.json +2 -2
  93. package/package.json +1 -1
  94. package/release/distribution-manifest.json +4 -4
  95. package/release/install-package-lock.json +5 -5
  96. package/release/install-package.json +2 -2
@@ -1 +1 @@
1
- {"openai-completions":{"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1000000,"maxTokens":30000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.5,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":2,"cacheRead":0.2,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false}}},"openai-responses":{"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","api":"openai-responses","provider":"xai","baseUrl":"https://api.x.ai/v1","compat":{"supportsLongCacheRetention":false},"reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.3,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null}}}}
1
+ {"openai-completions":{"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1000000,"maxTokens":30000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.5,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false}},"grok-4.7":{"id":"grok-4.7","name":"Grok 4.7","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.5,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":2,"cacheRead":0.2,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false}}},"openai-responses":{"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","api":"openai-responses","provider":"xai","baseUrl":"https://api.x.ai/v1","compat":{"supportsLongCacheRetention":false},"reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.3,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null}}}}
@@ -1 +1 @@
1
- {"openai-completions":{"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072}}}
1
+ {"openai-completions":{"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","api":"openai-completions","provider":"xiaomi-token-plan-ams","baseUrl":"https://token-plan-ams.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072}}}
@@ -1 +1 @@
1
- {"openai-completions":{"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072}}}
1
+ {"openai-completions":{"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","api":"openai-completions","provider":"xiaomi-token-plan-cn","baseUrl":"https://token-plan-cn.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072}}}
@@ -1 +1 @@
1
- {"openai-completions":{"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072}}}
1
+ {"openai-completions":{"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","api":"openai-completions","provider":"xiaomi-token-plan-sgp","baseUrl":"https://token-plan-sgp.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072}}}
@@ -1 +1 @@
1
- {"openai-completions":{"mimo-v2-flash":{"id":"mimo-v2-flash","name":"MiMo-V2-Flash","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536},"mimo-v2-omni":{"id":"mimo-v2-omni","name":"MiMo-V2-Omni","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5-pro-ultraspeed":{"id":"mimo-v2.5-pro-ultraspeed","name":"MiMo-V2.5-Pro-UltraSpeed","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":1.305,"output":2.61,"cacheRead":0.0108,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072}}}
1
+ {"openai-completions":{"mimo-v2-flash":{"id":"mimo-v2-flash","name":"MiMo-V2-Flash","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":262144,"maxTokens":65536},"mimo-v2-omni":{"id":"mimo-v2-omni","name":"MiMo-V2-Omni","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072},"mimo-v2-pro":{"id":"mimo-v2-pro","name":"MiMo-V2-Pro","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo-V2.5","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo-V2.5-Pro","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.5-pro-ultraspeed":{"id":"mimo-v2.5-pro-ultraspeed","name":"MiMo-V2.5-Pro-UltraSpeed","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text"],"cost":{"input":1.305,"output":2.61,"cacheRead":0.0108,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.6-flash":{"id":"mimo-v2.6-flash","name":"MiMo-V2.6-Flash","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.6-pro":{"id":"mimo-v2.6-pro","name":"MiMo-V2.6-Pro","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072},"mimo-v2.6-pro-ultraspeed":{"id":"mimo-v2.6-pro-ultraspeed","name":"MiMo-V2.6-Pro-UltraSpeed","api":"openai-completions","provider":"xiaomi","baseUrl":"https://api.xiaomimimo.com/v1","compat":{"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"reasoning":true,"input":["text","image"],"cost":{"input":4.35,"output":8.7,"cacheRead":0.036,"cacheWrite":0},"contextWindow":1048576,"maxTokens":131072}}}
@@ -1,8 +1,8 @@
1
1
  [
2
2
  {
3
3
  "name": "@diffexai/diffex-ai",
4
- "version": "0.3.0",
5
- "sourceCommit": "c8cec4d3820393131eaae7b43d56ac5f75d8041a",
4
+ "version": "0.3.2",
5
+ "sourceCommit": "57dbba8a810d2e4cc81e48a30a4f5736e0e2d5bf",
6
6
  "license": "Apache-2.0",
7
7
  "portions": "Diffex contributions; Pi-derived portions retain MIT terms in LICENSE",
8
8
  "notice": "LICENSE",
@@ -20,7 +20,7 @@
20
20
  },
21
21
  {
22
22
  "name": "@diffexai/diffex-telemetry",
23
- "version": "^0.3.0",
23
+ "version": "^0.3.2",
24
24
  "distribution": "resolved separately by package manager; not bundled in this npm tarball"
25
25
  },
26
26
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "sourceCommit": "c8cec4d3820393131eaae7b43d56ac5f75d8041a",
2
+ "sourceCommit": "57dbba8a810d2e4cc81e48a30a4f5736e0e2d5bf",
3
3
  "algorithm": "sha256",
4
4
  "files": [
5
5
  {
@@ -676,11 +676,11 @@
676
676
  },
677
677
  {
678
678
  "path": "dist/providers/data/.manifest.json",
679
- "sha256": "39c101e7edcc148d18bce82909cded63ab0974a3e730f83d5d3acd11c6ce9201"
679
+ "sha256": "451dbdfb1a61cb43edd8c4afa4da89cc8d9856f4c2cb0d7abb354842cdbe925b"
680
680
  },
681
681
  {
682
682
  "path": "dist/providers/data/amazon-bedrock.json",
683
- "sha256": "9d3eed9613b9b56f0c5f202a61b279a7168edf01bae6c3218a7ab28664ff80ea"
683
+ "sha256": "1e0b4308b61f51c642616571d53efcca4aada249b20d220ca9068df7e5ea52fd"
684
684
  },
685
685
  {
686
686
  "path": "dist/providers/data/ant-ling.json",
@@ -688,11 +688,11 @@
688
688
  },
689
689
  {
690
690
  "path": "dist/providers/data/anthropic.json",
691
- "sha256": "6937a397c6c7cf654990d072734efad023b652b294b04961d43a5835d7d08156"
691
+ "sha256": "b2976a77dd2a3260d401918df7c523bd2124abae2382f7a67229829e2701d899"
692
692
  },
693
693
  {
694
694
  "path": "dist/providers/data/azure-openai-responses.json",
695
- "sha256": "787ba62322c46fbc69bc1fcb7c7cfc100b8f74211c72adf9766b6dbf5eae0c41"
695
+ "sha256": "dfcc219adb7d04783861274cb94ac503b9a0d9f00a4e77c3637ebfc779ee5eb8"
696
696
  },
697
697
  {
698
698
  "path": "dist/providers/data/baseten.json",
@@ -700,15 +700,15 @@
700
700
  },
701
701
  {
702
702
  "path": "dist/providers/data/cerebras.json",
703
- "sha256": "9eaa554e1b02f3665f8f63e6432d253bf81351af7c72001054dd8108aa528a52"
703
+ "sha256": "3be228c613905c215c9da3d0b3535e10cc594ff2351b05390744c7c34de89b6c"
704
704
  },
705
705
  {
706
706
  "path": "dist/providers/data/cloudflare-ai-gateway.json",
707
- "sha256": "356a2892803067a5d042c5abb87051edba46f7209589c625f8bcea8c7c5ce5c9"
707
+ "sha256": "fac11bff507133190fcb7cb216656a8ad1b8d3b8c37c1b523a6d85f931b0cbda"
708
708
  },
709
709
  {
710
710
  "path": "dist/providers/data/cloudflare-workers-ai.json",
711
- "sha256": "07ef63208ff7517fd1a80962f18143e21de399640423329490b157f459ccf995"
711
+ "sha256": "6012eb769382a5a9fa96ec5f429f6744848e377327c9063573a15006ef0652ce"
712
712
  },
713
713
  {
714
714
  "path": "dist/providers/data/deepseek.json",
@@ -716,19 +716,19 @@
716
716
  },
717
717
  {
718
718
  "path": "dist/providers/data/fireworks.json",
719
- "sha256": "4c9055f7a2c5345b808bb561b07b227fc29148e0fb774c0ac50db2b34ab89aaf"
719
+ "sha256": "f3e423850d1509690c0d8cfd4071bdb822f01a05e6d691032c309476edc8a927"
720
720
  },
721
721
  {
722
722
  "path": "dist/providers/data/github-copilot.json",
723
- "sha256": "37cfc1da3a6814e37e14c565ed0a1e41f2eb513b10aa8f11ac18f27fa392308c"
723
+ "sha256": "418a6da7c705b9043ffecc21597cb7d79bf80b6fb117f95a5a7675b68a032539"
724
724
  },
725
725
  {
726
726
  "path": "dist/providers/data/google-vertex.json",
727
- "sha256": "e1631109172dc1f7d7977570420a5bb86258bdd1088427e244a2c51545c4f24d"
727
+ "sha256": "97d80ac909d256cc1bf19ac54d9d8131c492e7c0c102ad89f68ade528544e0ad"
728
728
  },
729
729
  {
730
730
  "path": "dist/providers/data/google.json",
731
- "sha256": "7619bf03edd2a7acb06a2274a14b13c3a61354288abe029a758401d4de36a8fd"
731
+ "sha256": "68f6cf6283cc0d69b77b0fa79e9c94774e96524f61ebba616319f05d5c9db56c"
732
732
  },
733
733
  {
734
734
  "path": "dist/providers/data/groq.json",
@@ -736,7 +736,7 @@
736
736
  },
737
737
  {
738
738
  "path": "dist/providers/data/huggingface.json",
739
- "sha256": "a488b6f175b382277ccf7d487f877ef0c698994576bb55d2410838bf9c8c7c41"
739
+ "sha256": "2f93082144a7b2a1cbf79148244ce7559e0428d6310c5eb0648bca89b15a8b4b"
740
740
  },
741
741
  {
742
742
  "path": "dist/providers/data/kimi-coding.json",
@@ -744,27 +744,27 @@
744
744
  },
745
745
  {
746
746
  "path": "dist/providers/data/minimax-cn.json",
747
- "sha256": "65d37e55a6d9585855f94b3fb7739308d107fe248ebd9e1001d1c5d4606ad2c4"
747
+ "sha256": "4f636b47b28a507ad33b5eaba33fc4889e5956504d10f2a0d9c61167ae01ff1d"
748
748
  },
749
749
  {
750
750
  "path": "dist/providers/data/minimax.json",
751
- "sha256": "c7dc5765995ae77242916430929c7cc9a782589f7e483e13f7e01663190d028e"
751
+ "sha256": "9fd1764ffeefebded8579039cf0c48854a43e4c5b724f62361fc2ac54f705aa1"
752
752
  },
753
753
  {
754
754
  "path": "dist/providers/data/mistral.json",
755
- "sha256": "be522597b22bceeb0bb9a0ba1781647649ffd19637d0c8e67b056d7b0ec33d52"
755
+ "sha256": "9da97430d9b86ad7f606b0fc088694e7a04c38bfa8963a33e1205b3141c917eb"
756
756
  },
757
757
  {
758
758
  "path": "dist/providers/data/moonshotai-cn.json",
759
- "sha256": "63f77de8782dce6a8d4649b6075ee04c9732863ae85561e0867871220c558bde"
759
+ "sha256": "c1d6024d0095bb34e33847a3281692e8ddb7ddbb61748a0373cdab45f414d264"
760
760
  },
761
761
  {
762
762
  "path": "dist/providers/data/moonshotai.json",
763
- "sha256": "2a8dfb97eb905e991c22081dc09bd4a61c05b7fa9ac0d5c72d6930f601f490f1"
763
+ "sha256": "08b8a7bbb30aa3a5ed077f02bd59ea5e9d32a1a8257e56d1606be8d722091783"
764
764
  },
765
765
  {
766
766
  "path": "dist/providers/data/nvidia.json",
767
- "sha256": "2ff6862206269af88a694e627c4b54753055357710adaf49ac8518d102c17407"
767
+ "sha256": "6493e09b5db8b8fe9c8fae5bc15dc287645f37f83a4ed3a1ad1181e5830b5ff7"
768
768
  },
769
769
  {
770
770
  "path": "dist/providers/data/openai-codex.json",
@@ -772,19 +772,19 @@
772
772
  },
773
773
  {
774
774
  "path": "dist/providers/data/openai.json",
775
- "sha256": "6fa1954abd6c5b301620a02a57412bd60bbfdf20465b9a3eb4d113f88dfb8f7b"
775
+ "sha256": "d8107710ade17d9c177b677135bf1ae88d6b884ee765cd64b74afe501f1f0844"
776
776
  },
777
777
  {
778
778
  "path": "dist/providers/data/opencode-go.json",
779
- "sha256": "31c4434316c8a1b7fcc637b25f1147dd44da946a0b932ca10fb5ac594261dad7"
779
+ "sha256": "af32bbce67a5b2f705c43cd47e301e9fd4548bd3af03daaebb4b63bca864f9bc"
780
780
  },
781
781
  {
782
782
  "path": "dist/providers/data/opencode.json",
783
- "sha256": "43c5d9cc6fab109411e6ac8eebac4b9fb0b00cff844cf0eb6c1559a08586525f"
783
+ "sha256": "b3b709db64eb71505560758e36d287458280ce3d361d0d87ab5d616d6d6cf8a3"
784
784
  },
785
785
  {
786
786
  "path": "dist/providers/data/openrouter.json",
787
- "sha256": "a6bb9631baf0a19685c1ad0c847c6ddf848ff5c7881d5bc62cc0ffeff45ec932"
787
+ "sha256": "21dbdf7e09616dd36bfbf2121801cee9b8f68b5462e69c009bf1f665a2ba4002"
788
788
  },
789
789
  {
790
790
  "path": "dist/providers/data/qwen-token-plan-cn.json",
@@ -800,31 +800,31 @@
800
800
  },
801
801
  {
802
802
  "path": "dist/providers/data/together.json",
803
- "sha256": "927c707d06f2236cdab13f14c870fb58bce0614ba7287bbcd57cc9fd66d191ed"
803
+ "sha256": "b4971d293e5be6b9acaf7b5d9aa588e6374e5317c116e98437128197c39a2fac"
804
804
  },
805
805
  {
806
806
  "path": "dist/providers/data/vercel-ai-gateway.json",
807
- "sha256": "03b0830a794af1bc921fb504565534bedec660fcc9482adcf56ec5fb27703e60"
807
+ "sha256": "79ffb1b0c83cec8d26472ddc519ad6184eeb9cb1c960fd02c7dbf1473dcc5871"
808
808
  },
809
809
  {
810
810
  "path": "dist/providers/data/xai.json",
811
- "sha256": "282838b0546d63106c81f1703cdf5ed31ebfe0c5f13a4bec0d590472cbbe03f2"
811
+ "sha256": "d036f5d1ececd7280c09ca1a6249553f39a7a1087ddb129a0d689a427fc944c4"
812
812
  },
813
813
  {
814
814
  "path": "dist/providers/data/xiaomi-token-plan-ams.json",
815
- "sha256": "7ce8ed244672c45737d286ff3ca9c3a2686a5d4b2f0c5f71ab9348c14b14daf3"
815
+ "sha256": "9581074003df2c31dbe483221dbbd1891e92d05102fcb816d51cbb22542174cf"
816
816
  },
817
817
  {
818
818
  "path": "dist/providers/data/xiaomi-token-plan-cn.json",
819
- "sha256": "684892b5fe6fa371d6040d2011c0fa33facd650d2eaf19f5dbee8efb33016200"
819
+ "sha256": "df9f18cca62ed29398124b3c9f50b157eea83c32167579a40ac129a3a673e4d6"
820
820
  },
821
821
  {
822
822
  "path": "dist/providers/data/xiaomi-token-plan-sgp.json",
823
- "sha256": "b19e79b82ac4fdcb080e6d220106797504c885ed70b27fc2b3c1aa4810f32963"
823
+ "sha256": "5681a7eed774bc4b4e296cdae1a5028176b856b48af96cbd7776a03ba905aab1"
824
824
  },
825
825
  {
826
826
  "path": "dist/providers/data/xiaomi.json",
827
- "sha256": "810368d3828c8bb9498012a0d48639030c0c216b8c13e79da02daa515aa23448"
827
+ "sha256": "506eef7c189328cabce83768a48ec3e59c3f8a575f840d8ffcefa6966c340562"
828
828
  },
829
829
  {
830
830
  "path": "dist/providers/data/zai-coding-cn.json",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diffexai/diffex-ai",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Unified LLM API with automatic model discovery and provider configuration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,8 +1,8 @@
1
1
  [
2
2
  {
3
3
  "name": "@diffexai/diffex-client",
4
- "version": "0.3.0",
5
- "sourceCommit": "c8cec4d3820393131eaae7b43d56ac5f75d8041a",
4
+ "version": "0.3.2",
5
+ "sourceCommit": "57dbba8a810d2e4cc81e48a30a4f5736e0e2d5bf",
6
6
  "license": "Apache-2.0",
7
7
  "portions": "Diffex contributions; Pi-derived portions retain MIT terms in LICENSE",
8
8
  "notice": "LICENSE",
@@ -10,7 +10,7 @@
10
10
  },
11
11
  {
12
12
  "name": "@diffexai/diffex-protocol",
13
- "version": "^0.3.0",
13
+ "version": "^0.3.2",
14
14
  "distribution": "resolved separately by package manager; not bundled in this npm tarball"
15
15
  }
16
16
  ]
@@ -1,5 +1,5 @@
1
1
  {
2
- "sourceCommit": "c8cec4d3820393131eaae7b43d56ac5f75d8041a",
2
+ "sourceCommit": "57dbba8a810d2e4cc81e48a30a4f5736e0e2d5bf",
3
3
  "algorithm": "sha256",
4
4
  "files": [
5
5
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diffexai/diffex-client",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Transport-neutral client for remote Diffex sessions over framed CBOR bytes",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,8 +1,8 @@
1
1
  [
2
2
  {
3
3
  "name": "@diffexai/diffex-harness-state",
4
- "version": "0.3.0",
5
- "sourceCommit": "c8cec4d3820393131eaae7b43d56ac5f75d8041a",
4
+ "version": "0.3.2",
5
+ "sourceCommit": "57dbba8a810d2e4cc81e48a30a4f5736e0e2d5bf",
6
6
  "license": "Apache-2.0",
7
7
  "portions": "Diffex contributions; Pi-derived portions retain MIT terms in LICENSE",
8
8
  "notice": "LICENSE",
@@ -1,5 +1,5 @@
1
1
  {
2
- "sourceCommit": "c8cec4d3820393131eaae7b43d56ac5f75d8041a",
2
+ "sourceCommit": "57dbba8a810d2e4cc81e48a30a4f5736e0e2d5bf",
3
3
  "algorithm": "sha256",
4
4
  "files": [
5
5
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diffexai/diffex-harness-state",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Persistent harness state schema and bundle storage for Diffex",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,8 +1,8 @@
1
1
  [
2
2
  {
3
3
  "name": "@diffexai/diffex-protocol",
4
- "version": "0.3.0",
5
- "sourceCommit": "c8cec4d3820393131eaae7b43d56ac5f75d8041a",
4
+ "version": "0.3.2",
5
+ "sourceCommit": "57dbba8a810d2e4cc81e48a30a4f5736e0e2d5bf",
6
6
  "license": "Apache-2.0",
7
7
  "portions": "Diffex contributions; Pi-derived portions retain MIT terms in LICENSE",
8
8
  "notice": "LICENSE",
@@ -1,5 +1,5 @@
1
1
  {
2
- "sourceCommit": "c8cec4d3820393131eaae7b43d56ac5f75d8041a",
2
+ "sourceCommit": "57dbba8a810d2e4cc81e48a30a4f5736e0e2d5bf",
3
3
  "algorithm": "sha256",
4
4
  "files": [
5
5
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diffexai/diffex-protocol",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Transport-neutral CBOR protocol for remote Diffex sessions",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,8 +1,8 @@
1
1
  [
2
2
  {
3
3
  "name": "@diffexai/diffex-telemetry",
4
- "version": "0.3.0",
5
- "sourceCommit": "c8cec4d3820393131eaae7b43d56ac5f75d8041a",
4
+ "version": "0.3.2",
5
+ "sourceCommit": "57dbba8a810d2e4cc81e48a30a4f5736e0e2d5bf",
6
6
  "license": "Apache-2.0",
7
7
  "portions": "Diffex contributions; Pi-derived portions retain MIT terms in LICENSE",
8
8
  "notice": "LICENSE",
@@ -1,5 +1,5 @@
1
1
  {
2
- "sourceCommit": "c8cec4d3820393131eaae7b43d56ac5f75d8041a",
2
+ "sourceCommit": "57dbba8a810d2e4cc81e48a30a4f5736e0e2d5bf",
3
3
  "algorithm": "sha256",
4
4
  "files": [
5
5
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diffexai/diffex-telemetry",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Vendor-neutral telemetry contracts and typed schema utilities for Diffex",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,8 +1,8 @@
1
1
  [
2
2
  {
3
3
  "name": "@diffexai/diffex-tui",
4
- "version": "0.3.0",
5
- "sourceCommit": "c8cec4d3820393131eaae7b43d56ac5f75d8041a",
4
+ "version": "0.3.2",
5
+ "sourceCommit": "57dbba8a810d2e4cc81e48a30a4f5736e0e2d5bf",
6
6
  "license": "Apache-2.0",
7
7
  "portions": "Diffex contributions; Pi-derived portions retain MIT terms in LICENSE",
8
8
  "notice": "LICENSE",
@@ -1,5 +1,5 @@
1
1
  {
2
- "sourceCommit": "c8cec4d3820393131eaae7b43d56ac5f75d8041a",
2
+ "sourceCommit": "57dbba8a810d2e4cc81e48a30a4f5736e0e2d5bf",
3
3
  "algorithm": "sha256",
4
4
  "files": [
5
5
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diffexai/diffex-tui",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Terminal User Interface library with differential rendering for efficient text-based applications",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,5 +13,9 @@ export declare function spawnProcessSync(command: string, args: string[], option
13
13
  * the grace timer is re-armed on every chunk, so an actively writing descendant keeps
14
14
  * us reading, while a quiet inherited handle (e.g. a Windows daemonized descendant
15
15
  * that never lets `close` fire) still releases us after the grace elapses.
16
+ * Callers handing background jobs to an environment can explicitly bound draining
17
+ * with maxPostExitMs so ongoing service output cannot block session disposal.
16
18
  */
17
- export declare function waitForChildProcess(child: ChildProcess): Promise<number | null>;
19
+ export declare function waitForChildProcess(child: ChildProcess, options?: {
20
+ maxPostExitMs?: number;
21
+ }): Promise<number | null>;
@@ -19,16 +19,21 @@ export function spawnProcessSync(command, args, options) {
19
19
  * the grace timer is re-armed on every chunk, so an actively writing descendant keeps
20
20
  * us reading, while a quiet inherited handle (e.g. a Windows daemonized descendant
21
21
  * that never lets `close` fire) still releases us after the grace elapses.
22
+ * Callers handing background jobs to an environment can explicitly bound draining
23
+ * with maxPostExitMs so ongoing service output cannot block session disposal.
22
24
  */
23
- export function waitForChildProcess(child) {
25
+ export function waitForChildProcess(child, options) {
24
26
  return new Promise((resolve, reject) => {
25
27
  let settled = false;
26
28
  let exited = false;
27
29
  let exitCode = null;
28
30
  let postExitTimer;
31
+ let postExitDeadline;
29
32
  let stdoutEnded = child.stdout === null;
30
33
  let stderrEnded = child.stderr === null;
31
34
  const cleanup = () => {
35
+ if (postExitDeadline)
36
+ clearTimeout(postExitDeadline);
32
37
  if (postExitTimer) {
33
38
  clearTimeout(postExitTimer);
34
39
  postExitTimer = undefined;
@@ -88,6 +93,9 @@ export function waitForChildProcess(child) {
88
93
  exitCode = code;
89
94
  maybeFinalizeAfterExit();
90
95
  if (!settled) {
96
+ if (options?.maxPostExitMs !== undefined) {
97
+ postExitDeadline = setTimeout(() => finalize(exitCode), options.maxPostExitMs);
98
+ }
91
99
  armIdleTimer();
92
100
  }
93
101
  };
@@ -1,7 +1,28 @@
1
- /** A session owns the process groups it launches, including background jobs. */
1
+ import { type ShellProcessIdentity } from "./shell-process-identity.ts";
2
+ export type BackgroundProcessPolicy = {
3
+ readonly lifetime: "session";
4
+ } | {
5
+ readonly lifetime: "environment";
6
+ readonly ownershipDirectory: string;
7
+ };
8
+ export interface ShellOwnershipRecord {
9
+ readonly version: 1;
10
+ readonly executionId: string;
11
+ readonly owner: "session" | "environment";
12
+ readonly state: "active" | "background" | "terminated";
13
+ readonly processGroupId: number;
14
+ readonly supervisorPid: number;
15
+ readonly members: readonly ShellProcessIdentity[];
16
+ }
17
+ /** Session ownership ends only after a successful, durably published handoff. */
2
18
  export declare class OwnedShellProcesses {
3
19
  #private;
4
- track(pid: number): void;
20
+ readonly policy: BackgroundProcessPolicy;
21
+ constructor(policy?: BackgroundProcessPolicy);
22
+ track(pid: number, executionId: string): void;
23
+ /** Called synchronously on shell exit, before output draining or another event can cancel it. */
24
+ complete(pid: number, successful: boolean): void;
25
+ terminate(pid: number): void;
5
26
  releaseIfExited(pid: number): void;
6
27
  get count(): number;
7
28
  terminateAll(): Promise<void>;