@sparkelf/dsh-plugin-dataops 0.1.0-rc.9 → 0.2.0-rc.1

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/README.i18n.yaml CHANGED
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write packages/plus/dataops/README.md
5
- README.md: c843fd3c7aac7ea489b5311e4c3c50e8498cab94
6
- README.zh.md: 10fa42ed24dc8f8295dbe785a234ded025fcb1a4
5
+ README.md: 204f52df89c185f63099a532a57f6717ee188dc2
6
+ README.zh.md: b7a00c943b5551cef44150fcd1672e11e362f744
package/README.md CHANGED
@@ -23,7 +23,7 @@ This complete Host and Client plugin owns one DataOps target identity, browser A
23
23
  <a id="use-this-package"></a>
24
24
  ## Use this package
25
25
 
26
- Set `DSH_DATAOPS_BASE_URL` to the DataOps Web origin that serves both `/auth/dsh/authorize` and proxied `/api`; `DSH_DATAOPS_CALLBACK_ORIGIN` optionally names a non-loopback DSH browser origin. The package stores the delegated access token and stable target identity under `dataops_access_token` and `dataops_target_ref`; DataOps ties the token lifetime to its authenticated browser session. When the current grant expires or its browser session is revoked, the DataOps Client contribution raises a DSH shell modal with **Later** and **Sign in again**; the latter opens the real OAuth popup from the user gesture. Settings also distinguishes the rejected stored grant from a never-connected state and keeps the same recovery action available. An authentication-rejected MCP call remains an error result inside the agent turn; it does not terminate the task, and Plus does not automatically replay an unconfirmed tool operation. Disconnect revokes account tokens but retains target identity. OAuth callback failures expose only a fixed, actionable stage in Settings; authorization codes, state, tokens, upstream bodies, and arbitrary error text remain outside the browser message.
26
+ Set `DSH_DATAOPS_BASE_URL` to the DataOps Web origin that serves both `/auth/dsh/authorize` and proxied `/api`; `DSH_DATAOPS_CALLBACK_ORIGIN` optionally names a non-loopback DSH browser origin. The browser contribution registers only when Host plugin inventory reports the matching `plus-dataops` entry effectively enabled, so an installed package whose environment condition disables the Host stays inert instead of requesting absent routes. The package stores the delegated access token and stable target identity under `dataops_access_token` and `dataops_target_ref`; DataOps ties the token lifetime to its authenticated browser session. When the current grant expires or its browser session is revoked, the DataOps Client contribution raises a DSH shell modal with **Later** and **Sign in again**; the latter opens the real OAuth popup from the user gesture. Settings also distinguishes the rejected stored grant from a never-connected state and keeps the same recovery action available. An authentication-rejected MCP call remains an error result inside the agent turn; it does not terminate the task, and Plus does not automatically replay an unconfirmed tool operation. Disconnect revokes account tokens but retains target identity. OAuth callback failures expose only a fixed, actionable stage in Settings; authorization codes, state, tokens, upstream bodies, and arbitrary error text remain outside the browser message.
27
27
 
28
28
  -----
29
29
 
@@ -58,6 +58,7 @@ Connecting, disconnecting, or MCP discovery changes can alter the tool-schema pr
58
58
 
59
59
  This Dev Note is working context for maintainers; shipped behavior, limits, and rationale live in the sections above, the package code, and the linked Agent Note.
60
60
 
61
- - `src/index.ts` owns authorization, credentials, access expiry, and MCP child lifecycle. `src/client/store.ts` and `src/client/controller.ts` own shared browser status and OAuth lifecycle; `src/client/DataOpsExpiryModal.tsx` contributes the shell prompt and `src/client/DataOpsSection.tsx` contributes Settings. The [distribution Agent Note](../../../.agents/notes/proposed/architecture/2026-08-29-ranged-plus-patchset-distribution.md) records the package boundary.
61
+ - `src/index.ts` owns authorization, credentials, access expiry, and MCP child lifecycle. `src/client/store.ts` and `src/client/controller.ts` own shared browser status and OAuth lifecycle; `src/client/DataOpsExpiryModal.tsx` contributes the shell prompt and `src/client/DataOpsSection.tsx` contributes Settings. The [distribution Agent Note](../../../.agents/notes/implemented/architecture/2026-08-29-ranged-plus-patchset-distribution.md) records the package boundary.
62
+ - No runtime invariant companion is published because authorization and MCP child lifecycle are observed by their owning services; DataOps keeps no independent projection of those relationships.
62
63
 
63
64
  </details>
package/README.zh.md CHANGED
@@ -23,7 +23,7 @@ kind: "package-reference"
23
23
  <a id="use-this-package"></a>
24
24
  ## 使用此软件包
25
25
 
26
- 把`DSH_DATAOPS_BASE_URL`设为同时提供`/auth/dsh/authorize`及proxied `/api`的DataOps Web origin;`DSH_DATAOPS_CALLBACK_ORIGIN`可选指定non-loopback DSH browser origin。该package把delegated access token及stable target identity存入`dataops_access_token`与`dataops_target_ref`;DataOps把token lifetime绑定到authenticated browser session。Current grant过期或其browser session被revoke时,DataOps Client contribution会弹出带**稍后**与**重新登录**的DSH shell modal;后者从用户手势打开real OAuth popup。Settings也会把rejected stored grant与never-connected state区分,并保留同一个恢复动作。Authentication-rejected MCP call仍是agent turn内的error result,不会终止task;Plus不会自动重放结果未知的tool operation。Disconnect会revoke account tokens但保留target identity。OAuth callback failure只在Settings暴露固定、可操作的failure stage;authorization code、state、token、upstream body及任意error text不会进入browser message。
26
+ 把`DSH_DATAOPS_BASE_URL`设为同时提供`/auth/dsh/authorize`及proxied `/api`的DataOps Web origin;`DSH_DATAOPS_CALLBACK_ORIGIN`可选指定non-loopback DSH browser origin。Browser contribution仅在Host plugin inventory报告对应`plus-dataops` entry有效启用时注册;若环境条件禁用Host,已安装package保持inert,不请求不存在的route。该package把delegated access token及stable target identity存入`dataops_access_token`与`dataops_target_ref`;DataOps把token lifetime绑定到authenticated browser session。Current grant过期或其browser session被revoke时,DataOps Client contribution会弹出带**稍后**与**重新登录**的DSH shell modal;后者从用户手势打开real OAuth popup。Settings也会把rejected stored grant与never-connected state区分,并保留同一个恢复动作。Authentication-rejected MCP call仍是agent turn内的error result,不会终止task;Plus不会自动重放结果未知的tool operation。Disconnect会revoke account tokens但保留target identity。OAuth callback failure只在Settings暴露固定、可操作的failure stage;authorization code、state、token、upstream body及任意error text不会进入browser message。
27
27
 
28
28
  -----
29
29
 
@@ -58,6 +58,7 @@ Connecting、disconnecting或MCP discovery change可能改变tool-schema prefix
58
58
 
59
59
  该开发备注是maintainer working context;shipped behavior、limits及rationale以以上sections、package code及linked Agent Note为准。
60
60
 
61
- - `src/index.ts`持有authorization、credentials、access expiry及MCP child lifecycle。`src/client/store.ts`与`src/client/controller.ts`持有shared browser status及OAuth lifecycle;`src/client/DataOpsExpiryModal.tsx`贡献shell prompt,`src/client/DataOpsSection.tsx`贡献Settings。[Distribution Agent Note](../../../.agents/notes/proposed/architecture/2026-08-29-ranged-plus-patchset-distribution.zh.md)记录package boundary。
61
+ - `src/index.ts`持有authorization、credentials、access expiry及MCP child lifecycle。`src/client/store.ts`与`src/client/controller.ts`持有shared browser status及OAuth lifecycle;`src/client/DataOpsExpiryModal.tsx`贡献shell prompt,`src/client/DataOpsSection.tsx`贡献Settings。[Distribution Agent Note](../../../.agents/notes/implemented/architecture/2026-08-29-ranged-plus-patchset-distribution.zh.md)记录package boundary。
62
+ - 该package不发布`./invariant` companion,因为authorization与MCP child lifecycle由各自owner service观测;DataOps不保留这些relation的independent projection。
62
63
 
63
64
  </details>
package/lib/client.js CHANGED
@@ -196,7 +196,7 @@ window.__ModuleLoader__.load({
196
196
  }
197
197
  //#endregion
198
198
  //#region \0dsh-css:/home/runner/work/deepseek-harness-plus/deepseek-harness-plus/packages/plus/dataops/src/client/DataOpsSection.module.css.mjs
199
- const css = ".-x0sCW_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:12px;display:flex}.-x0sCW_title{margin:0;font-size:16px;font-weight:500;line-height:24px}.-x0sCW_body{flex-direction:column;gap:14px;display:flex}.-x0sCW_confirmCopy{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}.-x0sCW_statusRow,.-x0sCW_accountRow,.-x0sCW_actions,.-x0sCW_confirmActions{align-items:center;display:flex}.-x0sCW_statusRow{gap:8px;min-height:24px}.-x0sCW_statusLabel{min-width:0;font-size:14px;font-weight:500;line-height:22px}.-x0sCW_accountRow{background:var(--dsw-alias-interactive-bg-hover);border-radius:8px;gap:12px;padding:12px}.-x0sCW_avatar{background:var(--dsw-alias-interactive-bg-hover-solid);width:40px;height:40px;color:var(--dsw-alias-label-primary);border-radius:50%;flex:0 0 40px;place-items:center;font-size:14px;font-weight:600;display:grid}.-x0sCW_accountCopy{flex-direction:column;gap:1px;min-width:0;display:flex}.-x0sCW_accountCopy strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;line-height:22px;overflow:hidden}.-x0sCW_accountCopy span{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.-x0sCW_actions,.-x0sCW_confirmActions{flex-wrap:wrap;gap:8px}.-x0sCW_confirmBox{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-interactive-bg-hover);border-radius:8px;flex-direction:column;gap:10px;padding:12px;display:flex}.-x0sCW_confirmTitle{margin:0;font-size:14px;font-weight:500;line-height:22px}.-x0sCW_hint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.-x0sCW_error{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:18px}@media (width<=560px){.-x0sCW_actions>button,.-x0sCW_confirmActions>button{flex:auto}}";
199
+ const css = ".-x0sCW_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:12px;display:flex}.-x0sCW_title{margin:0;font-size:16px;font-weight:500;line-height:24px}.-x0sCW_body{flex-direction:column;gap:14px;display:flex}.-x0sCW_confirmCopy{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}.-x0sCW_statusRow,.-x0sCW_accountRow,.-x0sCW_actions,.-x0sCW_confirmActions{align-items:center;display:flex}.-x0sCW_statusRow{gap:8px;min-height:24px}.-x0sCW_statusLabel{min-width:0;font-size:14px;font-weight:500;line-height:22px}.-x0sCW_accountRow{background:var(--dsw-alias-interactive-bg-hover);border-radius:8px;gap:12px;padding:12px}.-x0sCW_avatar{corner-shape:round;background:var(--dsw-alias-interactive-bg-hover-solid);width:40px;height:40px;color:var(--dsw-alias-label-primary);border-radius:50%;flex:0 0 40px;place-items:center;font-size:14px;font-weight:600;display:grid}.-x0sCW_accountCopy{flex-direction:column;gap:1px;min-width:0;display:flex}.-x0sCW_accountCopy strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;line-height:22px;overflow:hidden}.-x0sCW_accountCopy span{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px;overflow:hidden}.-x0sCW_actions,.-x0sCW_confirmActions{flex-wrap:wrap;gap:8px}.-x0sCW_confirmBox{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-interactive-bg-hover);border-radius:8px;flex-direction:column;gap:10px;padding:12px;display:flex}.-x0sCW_confirmTitle{margin:0;font-size:14px;font-weight:500;line-height:22px}.-x0sCW_hint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.-x0sCW_error{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:18px}@media (width<=560px){.-x0sCW_actions>button,.-x0sCW_confirmActions>button{flex:auto}}";
200
200
  const tagId = "@sparkelf/dsh-plugin-dataops/DataOpsSection.module.css";
201
201
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
202
202
  const tag = document.createElement("style");
@@ -489,10 +489,18 @@ window.__ModuleLoader__.load({
489
489
  //#endregion
490
490
  //#region lib/types/client/index.js
491
491
  const NS = "settings.dataops";
492
- /** Client services required for the Settings and frame-overlay contributions. */
493
- const inject = ["slots", "locale"];
494
- /** Register the shared DataOps lifecycle, Settings section, and expiry modal. */
495
- function apply(ctx) {
492
+ /** Client services required for Host activation discovery, Settings, and frame overlays. */
493
+ const inject = [
494
+ "slots",
495
+ "locale",
496
+ "remote",
497
+ "remote.pluginInventory"
498
+ ];
499
+ /** 仅在Host inventory确认对应plugin有效启用时注册browser contributions。 */
500
+ async function apply(ctx) {
501
+ const result = await ctx.remote.pluginInventory.list();
502
+ if (!result.ok) throw new Error(`pluginInventory.list failed: ${result.error.code}: ${result.error.message}`);
503
+ if (!result.value.entries.some((entry) => entry.moduleName === "@sparkelf/dsh-plugin-dataops" && entry.enabled)) return;
496
504
  ctx.effect(() => ctx.locale.register(NS, {
497
505
  zh,
498
506
  en
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@ import { createHash, randomBytes } from "node:crypto";
2
2
  import { MAX_TIMER_DELAY_MS } from "@deepseek-ai/dsh-timeout";
3
3
  import z from "@deepseek-ai/schemastery";
4
4
  import { credentialRef } from "@deepseek-ai/dsh-credentials";
5
- import * as McpClient from "@sparkelf/dsh-plugin-mcp-credentials";
5
+ import { Config as Config$1, apply as apply$1, inject as inject$1, name as name$1 } from "@sparkelf/dsh-plugin-mcp-credentials";
6
6
  //#region lib/types/index.js
7
7
  /**
8
8
  * Standalone DataOps MCP integration. It owns one persistent DSH target
@@ -10,6 +10,12 @@ import * as McpClient from "@sparkelf/dsh-plugin-mcp-credentials";
10
10
  * authenticated MCP client for the target's immutable principal.
11
11
  * @module @sparkelf/dsh-plugin-dataops
12
12
  */
13
+ const McpClient = {
14
+ name: name$1,
15
+ inject: inject$1,
16
+ Config: Config$1,
17
+ apply: apply$1
18
+ };
13
19
  /** Cordis plugin name for the standalone DataOps integration. */
14
20
  const name = "mcp-dataops";
15
21
  /** Services required by the standalone authorization and MCP composition. */
@@ -5,8 +5,8 @@ declare module '@deepseek-ai/dsh-client-ui-slots' {
5
5
  'settings.dataops': DataOpsKey;
6
6
  }
7
7
  }
8
- /** Client services required for the Settings and frame-overlay contributions. */
8
+ /** Client services required for Host activation discovery, Settings, and frame overlays. */
9
9
  export declare const inject: string[];
10
- /** Register the shared DataOps lifecycle, Settings section, and expiry modal. */
11
- export declare function apply(ctx: Context): void;
10
+ /** 仅在Host inventory确认对应plugin有效启用时注册browser contributions。 */
11
+ export declare function apply(ctx: Context): Promise<void>;
12
12
  //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -1,92 +1,88 @@
1
1
  {
2
- "name": "@sparkelf/dsh-plugin-dataops",
3
- "description": "Standalone DataOps MCP integration with delegated browser authorization and Settings UI",
4
- "version": "0.1.0-rc.9",
5
- "publishConfig": {
6
- "access": "public"
7
- },
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/SparkElf/deepseek-harness-plus.git",
11
- "directory": "packages/plus/dataops"
2
+ "dependencies": {
3
+ "@deepseek-ai/schemastery": ">=3.18.1"
12
4
  },
13
- "type": "module",
14
- "main": "lib/index.js",
15
- "types": "lib/types/index.d.ts",
16
- "exports": {
17
- ".": {
18
- "types": "./lib/types/index.d.ts",
19
- "default": "./lib/index.js"
20
- },
21
- "./client": {
22
- "types": "./lib/types/client/index.d.ts",
23
- "default": "./lib/client.js"
24
- },
25
- "./invariant": {
26
- "types": "./lib/types/invariant.d.ts",
27
- "default": "./lib/invariant.js"
28
- },
29
- "./package.json": "./package.json"
5
+ "description": "Standalone DataOps MCP integration with delegated browser authorization and Settings UI",
6
+ "devDependencies": {
7
+ "@deepseek-ai/cordis": "^4.0.2",
8
+ "@deepseek-ai/dsh-api-remotes": "^0.1.5-rc.2",
9
+ "@deepseek-ai/dsh-brand": "^0.1.5-rc.2",
10
+ "@deepseek-ai/dsh-client-connection": "^0.1.5-rc.2",
11
+ "@deepseek-ai/dsh-client-locale": "^0.1.5-rc.2",
12
+ "@deepseek-ai/dsh-client-store": "^0.1.5-rc.2",
13
+ "@deepseek-ai/dsh-client-ui-layout": "^0.1.5-rc.2",
14
+ "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.2",
15
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.5-rc.2",
16
+ "@deepseek-ai/dsh-client-ui-settings": "^0.1.5-rc.2",
17
+ "@deepseek-ai/dsh-client-ui-slots": "^0.1.5-rc.2",
18
+ "@deepseek-ai/dsh-credentials": "^0.1.5-rc.2",
19
+ "@deepseek-ai/dsh-host-webserver": "^0.1.5-rc.2",
20
+ "@deepseek-ai/dsh-timeout": "^0.1.5-rc.2",
21
+ "@deepseek-ai/dsh-tools": "^0.1.5-rc.2",
22
+ "@sparkelf/dsh-plugin-mcp-credentials": "^0.2.0-rc.1",
23
+ "@types/react": "~18.3.1",
24
+ "react": "^18.2.0"
30
25
  },
31
26
  "dsh": {
32
27
  "client": {
33
- "platform": "web",
34
28
  "inject": [
29
+ "@deepseek-ai/dsh-api-remotes",
35
30
  "@deepseek-ai/dsh-client-connection",
36
31
  "@deepseek-ai/dsh-client-locale",
37
32
  "@deepseek-ai/dsh-client-ui-layout",
38
33
  "@deepseek-ai/dsh-client-ui-settings",
39
34
  "@deepseek-ai/dsh-client-ui-renderer"
40
- ]
35
+ ],
36
+ "platform": "web"
41
37
  }
42
38
  },
39
+ "exports": {
40
+ ".": {
41
+ "default": "./lib/index.js",
42
+ "types": "./lib/types/index.d.ts"
43
+ },
44
+ "./client": {
45
+ "default": "./lib/client.js",
46
+ "types": "./lib/types/client/index.d.ts"
47
+ },
48
+ "./package.json": "./package.json"
49
+ },
43
50
  "files": [
44
51
  "lib/index.js",
45
- "lib/invariant.js",
46
52
  "lib/client.js",
47
53
  "lib/types/**/*.d.ts"
48
54
  ],
49
55
  "license": "MIT",
56
+ "main": "lib/index.js",
57
+ "name": "@sparkelf/dsh-plugin-dataops",
50
58
  "peerDependencies": {
51
59
  "@deepseek-ai/cordis": ">=4.0.1",
52
- "@deepseek-ai/dsh-brand": ">=0.1.2-alpha.1",
53
- "@deepseek-ai/dsh-client-connection": ">=0.1.2-alpha.1",
54
- "@deepseek-ai/dsh-client-locale": ">=0.1.2-alpha.1",
55
- "@deepseek-ai/dsh-client-ui-layout": ">=0.1.2-alpha.1",
56
- "@deepseek-ai/dsh-client-ui-renderer": ">=0.1.2-alpha.1",
57
- "@deepseek-ai/dsh-client-ui-settings": ">=0.1.2-alpha.1",
58
- "@deepseek-ai/dsh-credentials": ">=0.1.2-alpha.1",
59
- "@deepseek-ai/dsh-host-webserver": ">=0.1.2-alpha.1",
60
- "@deepseek-ai/dsh-invariants": ">=0.1.2-alpha.1",
61
- "@deepseek-ai/dsh-timeout": ">=0.1.2-alpha.1",
62
- "@deepseek-ai/dsh-tools": ">=0.1.2-alpha.1",
63
- "@sparkelf/dsh-plugin-mcp-credentials": ">=0.1.0-rc.9"
60
+ "@deepseek-ai/dsh-api-remotes": ">=0.1.5-rc.2",
61
+ "@deepseek-ai/dsh-brand": ">=0.1.5-rc.2",
62
+ "@deepseek-ai/dsh-client-connection": ">=0.1.5-rc.2",
63
+ "@deepseek-ai/dsh-client-locale": ">=0.1.5-rc.2",
64
+ "@deepseek-ai/dsh-client-ui-layout": ">=0.1.5-rc.2",
65
+ "@deepseek-ai/dsh-client-ui-renderer": ">=0.1.5-rc.2",
66
+ "@deepseek-ai/dsh-client-ui-settings": ">=0.1.5-rc.2",
67
+ "@deepseek-ai/dsh-credentials": ">=0.1.5-rc.2",
68
+ "@deepseek-ai/dsh-host-webserver": ">=0.1.5-rc.2",
69
+ "@deepseek-ai/dsh-timeout": ">=0.1.5-rc.2",
70
+ "@deepseek-ai/dsh-tools": ">=0.1.5-rc.2",
71
+ "@sparkelf/dsh-plugin-mcp-credentials": ">=0.1.0-rc.26"
64
72
  },
65
- "dependencies": {
66
- "@deepseek-ai/schemastery": ">=3.18.1"
73
+ "publishConfig": {
74
+ "access": "public"
67
75
  },
68
- "devDependencies": {
69
- "@types/react": "~18.3.1",
70
- "react": "^18.2.0",
71
- "@deepseek-ai/cordis": "^4.0.1",
72
- "@deepseek-ai/dsh-brand": "^0.1.2-alpha.1",
73
- "@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.1",
74
- "@deepseek-ai/dsh-client-locale": "^0.1.2-alpha.1",
75
- "@deepseek-ai/dsh-client-store": "^0.1.2-alpha.1",
76
- "@deepseek-ai/dsh-client-ui-layout": "^0.1.2-alpha.1",
77
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.2-alpha.1",
78
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1",
79
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.2-alpha.1",
80
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.1",
81
- "@deepseek-ai/dsh-credentials": "^0.1.2-alpha.1",
82
- "@deepseek-ai/dsh-host-webserver": "^0.1.2-alpha.1",
83
- "@deepseek-ai/dsh-invariants": "^0.1.2-alpha.1",
84
- "@deepseek-ai/dsh-timeout": "^0.1.2-alpha.1",
85
- "@deepseek-ai/dsh-tools": "^0.1.2-alpha.1",
86
- "@sparkelf/dsh-plugin-mcp-credentials": "^0.1.0-rc.9"
76
+ "repository": {
77
+ "directory": "packages/plus/dataops",
78
+ "type": "git",
79
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git"
87
80
  },
88
81
  "scripts": {
89
82
  "bundle": "tsdown",
90
83
  "watch": "tsdown --watch"
91
- }
92
- }
84
+ },
85
+ "type": "module",
86
+ "types": "lib/types/index.d.ts",
87
+ "version": "0.2.0-rc.1"
88
+ }
package/lib/invariant.js DELETED
@@ -1,16 +0,0 @@
1
- //#region lib/types/invariant.js
2
- const PACKAGE_NAME = "@sparkelf/dsh-plugin-dataops";
3
- /** Cordis plugin name for the DataOps invariant companion. */
4
- const name = "mcp-dataops-invariant";
5
- /** Services required to register the package invariant installer. */
6
- const inject = ["invariants"];
7
- /** No runtime invariant: the package owns browser OAuth handoff and a child mcp-client fiber, not a separate durable projection. */
8
- const install = () => {};
9
- /**
10
- * Register the package's explained empty invariant installer.
11
- * @param ctx - Cordis context with the invariant registry.
12
- * @returns The registration disposer.
13
- */
14
- const apply = (ctx) => Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install));
15
- //#endregion
16
- export { apply, inject, name };
@@ -1,13 +0,0 @@
1
- /** Package-owned invariant companion for `@sparkelf/dsh-plugin-dataops`. */
2
- import type { Context } from '@deepseek-ai/cordis';
3
- /** Cordis plugin name for the DataOps invariant companion. */
4
- export declare const name = "mcp-dataops-invariant";
5
- /** Services required to register the package invariant installer. */
6
- export declare const inject: string[];
7
- /**
8
- * Register the package's explained empty invariant installer.
9
- * @param ctx - Cordis context with the invariant registry.
10
- * @returns The registration disposer.
11
- */
12
- export declare const apply: (ctx: Context) => Promise<() => void>;
13
- //# sourceMappingURL=invariant.d.ts.map