@skaile/workspaces 0.35.0 → 0.36.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.
Files changed (99) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/asset-manager/index.js +1 -1
  3. package/dist/bridge/drivers/claude-sdk.js +9 -5
  4. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  5. package/dist/bridge/drivers/codex.js +2 -2
  6. package/dist/bridge/drivers/continue.js +3 -3
  7. package/dist/bridge/drivers/echo.js +1 -1
  8. package/dist/bridge/drivers/gemini.js +4 -4
  9. package/dist/bridge/drivers/goose.js +3 -3
  10. package/dist/bridge/drivers/omp.js +2 -2
  11. package/dist/bridge/drivers/opencode.js +3 -3
  12. package/dist/bridge/drivers/qwen.js +4 -4
  13. package/dist/bridge/index.js +3 -3
  14. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  15. package/dist/bridge/src/error-classifier.d.ts +22 -0
  16. package/dist/bridge/src/error-classifier.d.ts.map +1 -1
  17. package/dist/bridge/src/index.d.ts +1 -1
  18. package/dist/bridge/src/index.d.ts.map +1 -1
  19. package/dist/bridge/src/types.d.ts +1 -1
  20. package/dist/bridge/src/types.d.ts.map +1 -1
  21. package/dist/{chunk-TV2OU2EZ.js → chunk-4ZACMAT3.js} +4 -4
  22. package/dist/{chunk-TV2OU2EZ.js.map → chunk-4ZACMAT3.js.map} +1 -1
  23. package/dist/{chunk-NSVAJWWQ.js → chunk-5IXCNMMU.js} +4 -4
  24. package/dist/{chunk-NSVAJWWQ.js.map → chunk-5IXCNMMU.js.map} +1 -1
  25. package/dist/{chunk-SKVUDDHE.js → chunk-FDLVPYSN.js} +253 -103
  26. package/dist/chunk-FDLVPYSN.js.map +1 -0
  27. package/dist/{chunk-NGJ6E344.js → chunk-GAH4YRCI.js} +20 -3
  28. package/dist/chunk-GAH4YRCI.js.map +1 -0
  29. package/dist/{chunk-NAMD4AIK.js → chunk-JNH6TTIO.js} +3 -3
  30. package/dist/{chunk-NAMD4AIK.js.map → chunk-JNH6TTIO.js.map} +1 -1
  31. package/dist/{chunk-CIFTUSBV.js → chunk-KM6DCR7A.js} +2 -2
  32. package/dist/{chunk-CIFTUSBV.js.map → chunk-KM6DCR7A.js.map} +1 -1
  33. package/dist/{chunk-6422UOMQ.js → chunk-LY5O73Q2.js} +3 -3
  34. package/dist/{chunk-6422UOMQ.js.map → chunk-LY5O73Q2.js.map} +1 -1
  35. package/dist/{chunk-52HINMW4.js → chunk-MCQ4TJ3P.js} +21 -9
  36. package/dist/chunk-MCQ4TJ3P.js.map +1 -0
  37. package/dist/{chunk-67AXL4OK.js → chunk-U3TV7SRR.js} +4 -4
  38. package/dist/{chunk-67AXL4OK.js.map → chunk-U3TV7SRR.js.map} +1 -1
  39. package/dist/{chunk-ZGJE4ZDP.js → chunk-YPRW2ROJ.js} +2 -2
  40. package/dist/{chunk-ZGJE4ZDP.js.map → chunk-YPRW2ROJ.js.map} +1 -1
  41. package/dist/{chunk-7B3CL5JT.js → chunk-ZE5WYJVU.js} +2 -2
  42. package/dist/{chunk-7B3CL5JT.js.map → chunk-ZE5WYJVU.js.map} +1 -1
  43. package/dist/cli/index.js +10 -10
  44. package/dist/connectors/config.js +1 -1
  45. package/dist/connectors/index.js +2 -2
  46. package/dist/connectors/src/secrets.d.ts +14 -14
  47. package/dist/connectors/src/secrets.d.ts.map +1 -1
  48. package/dist/factory-assets/connectors/deploy.js +2 -2
  49. package/dist/factory-assets/connectors/devserver.js +2 -2
  50. package/dist/factory-assets/connectors/flow/adapter.js +2 -2
  51. package/dist/factory-assets/connectors/flow/run-flow.js +3 -3
  52. package/dist/factory-assets/connectors/flow.js +2 -2
  53. package/dist/factory-assets/connectors/git.js +2 -2
  54. package/dist/factory-assets/connectors/gmail.js +2 -2
  55. package/dist/factory-assets/connectors/googledrive.js +2 -2
  56. package/dist/factory-assets/connectors/local.js +2 -2
  57. package/dist/factory-assets/connectors/mattermost.js +2 -2
  58. package/dist/factory-assets/connectors/memory.js +2 -2
  59. package/dist/factory-assets/connectors/minio.js +2 -2
  60. package/dist/factory-assets/connectors/postgres.js +2 -2
  61. package/dist/factory-assets/connectors/s3.js +2 -2
  62. package/dist/factory-assets/connectors/sharepoint.js +2 -2
  63. package/dist/factory-assets/connectors/sqlite.js +2 -2
  64. package/dist/factory-assets/connectors/static-server.js +2 -2
  65. package/dist/factory-assets/connectors/tunnel.js +2 -2
  66. package/dist/factory-assets/connectors/webdav.js +2 -2
  67. package/dist/factory-assets/connectors/xstate-store.js +2 -2
  68. package/dist/factory-assets/connectors/xstate.js +2 -2
  69. package/dist/runner/index.js +7 -7
  70. package/dist/runner/src/external-mcp.d.ts +24 -1
  71. package/dist/runner/src/external-mcp.d.ts.map +1 -1
  72. package/dist/runner/src/mcp-runtime-handlers.d.ts +42 -0
  73. package/dist/runner/src/mcp-runtime-handlers.d.ts.map +1 -0
  74. package/dist/runner/src/resources.d.ts +12 -0
  75. package/dist/runner/src/resources.d.ts.map +1 -1
  76. package/dist/runner/src/runner-capabilities.d.ts +33 -0
  77. package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
  78. package/dist/runner/src/serve.d.ts +18 -1
  79. package/dist/runner/src/serve.d.ts.map +1 -1
  80. package/dist/runner/src/session-builder.d.ts +8 -0
  81. package/dist/runner/src/session-builder.d.ts.map +1 -1
  82. package/dist/runner/src/session-resource-handlers.d.ts +5 -1
  83. package/dist/runner/src/session-resource-handlers.d.ts.map +1 -1
  84. package/dist/sdk/asset-manager.js +1 -1
  85. package/dist/sdk/bridge.js +3 -3
  86. package/dist/sdk/index.js +7 -7
  87. package/dist/sdk/runner.js +7 -7
  88. package/dist/{setup-BSDHVMR6.js → setup-QQ3SNNWP.js} +5 -5
  89. package/dist/{setup-BSDHVMR6.js.map → setup-QQ3SNNWP.js.map} +1 -1
  90. package/dist/tui/index.js +7 -7
  91. package/dist/types/src/events.d.ts +22 -4
  92. package/dist/types/src/events.d.ts.map +1 -1
  93. package/dist/types/src/index.d.ts +1 -1
  94. package/dist/types/src/index.d.ts.map +1 -1
  95. package/dist/workspace-plugin/index.js +1 -1
  96. package/package.json +1 -1
  97. package/dist/chunk-52HINMW4.js.map +0 -1
  98. package/dist/chunk-NGJ6E344.js.map +0 -1
  99. package/dist/chunk-SKVUDDHE.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.36.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#143](https://github.com/skaile-ai/workspaces/pull/143) [`987613d`](https://github.com/skaile-ai/workspaces/commit/987613da9a77b3a4d8ceb3e47a0763cf2806af36) Thanks [@peteralbert](https://github.com/peteralbert)! - feat: live MCP hot-plug-on-assign — new `runner.add_mcp_server` capability (connect a remote/stdio MCP server to a running session and register its `mcp__<id>__*` tools with no restart) and MCP servers are now reported in the `resources_available` event (`mcp_servers: McpServerInfo[]`) so the platform can show a truthful Live/Restart badge.
8
+
9
+ ### Patch Changes
10
+
11
+ - [#141](https://github.com/skaile-ai/workspaces/pull/141) [`ffc110e`](https://github.com/skaile-ai/workspaces/commit/ffc110eabb97e19d8f2f76f0354fdd5108da7083) Thanks [@Frozen666](https://github.com/Frozen666)! - fix(bridge): classify a 401 that recurs after a successful credential refresh as an `account` failure, not `auth`
12
+
13
+ When Anthropic returns 401 for a non-auth reason (hidden-tier rate limit, billing block, anti-abuse throttle on OAuth tokens), the bridge refreshed the credential, retried, hit the same 401, and surfaced "Invalid authentication credentials" — a wrong, non-actionable message. The driver now downgrades a post-refresh 401 (`this.authSelfHealUsed === true`) from `auth` to a new `account` category and surfaces `AccountUnavailableError` (not an `AuthError`, so the self-heal does not loop). Applied on both the thrown-exception (`handleConsumerError`) and `is_error`-result (`handleResultErrorPayload`) paths. Adds `"account"` to `ErrorCategory` in `@skaile/workspaces/types`.
14
+
3
15
  ## 0.35.0
4
16
 
5
17
  ### Minor Changes
@@ -1,4 +1,4 @@
1
- export { AssetManager, parseCanonicalLockKey } from '../chunk-7B3CL5JT.js';
1
+ export { AssetManager, parseCanonicalLockKey } from '../chunk-ZE5WYJVU.js';
2
2
  export { createScaffold, deployAll, installAgent, removeAsset } from '../chunk-WEQN6EWW.js';
3
3
  import '../chunk-2Q6OY3SU.js';
4
4
  import '../chunk-5DPQ766L.js';
@@ -1,7 +1,7 @@
1
1
  import { dispatchCapability } from '../../chunk-RRVQAE5D.js';
2
2
  import { fetchProviderModels } from '../../chunk-BMQKMOQY.js';
3
- import { AuthError, classifyClaudeSdkError } from '../../chunk-NGJ6E344.js';
4
- import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-CIFTUSBV.js';
3
+ import { AuthError, classifyClaudeSdkError, reclassifyAuthAsAccountUnavailable, AccountUnavailableError } from '../../chunk-GAH4YRCI.js';
4
+ import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-KM6DCR7A.js';
5
5
  import '../../chunk-6E6PKKAD.js';
6
6
  import '../../chunk-JB35MVBN.js';
7
7
  import '../../chunk-NSBPE2FW.js';
@@ -796,16 +796,17 @@ var ClaudeSdkDriver = class extends AgentDriver {
796
796
  this.log.info("aborted");
797
797
  return;
798
798
  }
799
- const detail = classifyClaudeSdkError({
799
+ const rawDetail = classifyClaudeSdkError({
800
800
  errors: [error.message],
801
801
  oauthCredential: this.usingOauthCredential
802
802
  });
803
+ const detail = rawDetail.category === "auth" && this.authSelfHealUsed ? reclassifyAuthAsAccountUnavailable(rawDetail) : rawDetail;
803
804
  this.log.error("consumer error", {
804
805
  message: error.message,
805
806
  category: detail.category,
806
807
  retryable: detail.retryable
807
808
  });
808
- const surfaced = detail.category === "auth" ? new AuthError(detail) : error;
809
+ const surfaced = detail.category === "auth" ? new AuthError(detail) : detail.category === "account" ? new AccountUnavailableError(detail) : error;
809
810
  this.failTurn(surfaced, detail);
810
811
  }
811
812
  /**
@@ -1067,12 +1068,13 @@ var ClaudeSdkDriver = class extends AgentDriver {
1067
1068
  * empty errors defer to the consumer-error catch.
1068
1069
  */
1069
1070
  handleResultErrorPayload(msg, errors) {
1070
- const detail = classifyClaudeSdkError({
1071
+ const rawDetail = classifyClaudeSdkError({
1071
1072
  errors,
1072
1073
  terminalReason: msg.terminal_reason,
1073
1074
  subtype: msg.subtype,
1074
1075
  oauthCredential: this.usingOauthCredential
1075
1076
  });
1077
+ const detail = rawDetail.category === "auth" && this.authSelfHealUsed ? reclassifyAuthAsAccountUnavailable(rawDetail) : rawDetail;
1076
1078
  this.log.error("turn ended with error", {
1077
1079
  subtype: msg.subtype,
1078
1080
  terminalReason: msg.terminal_reason,
@@ -1083,6 +1085,8 @@ var ClaudeSdkDriver = class extends AgentDriver {
1083
1085
  const errorText = errors.join("; ") || `Agent stopped: ${msg.subtype}`;
1084
1086
  if (detail.category === "auth") {
1085
1087
  this.failTurn(new AuthError({ ...detail, message: errorText }), detail);
1088
+ } else if (detail.category === "account") {
1089
+ this.failTurn(new AccountUnavailableError({ ...detail, message: errorText }), detail);
1086
1090
  } else if (errors.length > 0) {
1087
1091
  this.emit("agent-event", {
1088
1092
  type: "error",