dsh-doublecheck 0.7.0 → 0.7.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.
@@ -27,8 +27,8 @@
27
27
  */
28
28
  import type { SessionEvent } from '@deepseek-ai/dsh-session';
29
29
  import type { ObjectJsonSchema } from '@deepseek-ai/dsh-tools';
30
- import { type TestRunDetection } from './evidence.ts';
31
- import { type GrilledSpec, type ReviewFinding } from './vocabulary.ts';
30
+ import { type TestRunDetection } from './evidence.js';
31
+ import { type GrilledSpec, type ReviewFinding } from './vocabulary.js';
32
32
  /** The four gate phases, in checklist order. */
33
33
  export type GatePhase = 'requirements' | 'tests' | 'consistency' | 'review';
34
34
  /** All gate phases in checklist order. */
@@ -11,10 +11,10 @@
11
11
  * @module dsh-doublecheck/domain/projection
12
12
  */
13
13
  import type { SessionEvent } from '@deepseek-ai/dsh-session';
14
- import { type TestRunDetection } from './evidence.ts';
15
- import { type DisciplineStage, type TestColor } from './stages.ts';
16
- import { type GateVerdict } from './gate.ts';
17
- import type { DoublecheckView } from '../types.ts';
14
+ import { type TestRunDetection } from './evidence.js';
15
+ import { type DisciplineStage, type TestColor } from './stages.js';
16
+ import { type GateVerdict } from './gate.js';
17
+ import type { DoublecheckView } from '../types.js';
18
18
  /** The projection unit's plain-JSON fold state. */
19
19
  export interface DoublecheckProjectionState {
20
20
  /** The last discipline stage a successful call or test run reached. */
@@ -14,8 +14,8 @@
14
14
  import type { SessionEvent } from '@deepseek-ai/dsh-session';
15
15
  import type { ObjectJsonSchema } from '@deepseek-ai/dsh-tools';
16
16
  import type { WorkflowMeta } from '@deepseek-ai/dsh-workflow';
17
- import { type TestRunDetection } from './evidence.ts';
18
- import { type GrilledSpec, type ReportVerdict, type ReviewFinding, type ReviewVerdict, type VerifyCheck } from './vocabulary.ts';
17
+ import { type TestRunDetection } from './evidence.js';
18
+ import { type GrilledSpec, type ReportVerdict, type ReviewFinding, type ReviewVerdict, type VerifyCheck } from './vocabulary.js';
19
19
  /** One timeline row of the report fold, in log order. */
20
20
  export interface ReportTimelineEntry {
21
21
  /** The evidence kind this row records. */
@@ -15,7 +15,7 @@
15
15
  * @module dsh-doublecheck/domain/stages
16
16
  */
17
17
  import type { SessionEvent } from '@deepseek-ai/dsh-session';
18
- import { type TestRunDetection } from './evidence.ts';
18
+ import { type TestRunDetection } from './evidence.js';
19
19
  /** The discipline stages, in execution order. */
20
20
  export type DisciplineStage = 'grill' | 'design' | 'red' | 'green' | 'review' | 'verify';
21
21
  /** All discipline stages in order. */
package/lib/events.d.ts CHANGED
@@ -14,10 +14,10 @@
14
14
  */
15
15
  import type { Agent } from '@deepseek-ai/dsh-agent';
16
16
  import type { Session, SessionEventMap } from '@deepseek-ai/dsh-session';
17
- import type { GrilledSpec, ReviewFinding, ReviewVerdict, ReportVerdict, VerifyCheck } from './domain/vocabulary.ts';
18
- import type { GateState, GateVerdict } from './domain/gate.ts';
19
- export type { GrilledSpec, ReviewFinding, ReviewVerdict, ReportVerdict, VerifyCheck } from './domain/vocabulary.ts';
20
- export type { GateState } from './domain/gate.ts';
17
+ import type { GrilledSpec, ReviewFinding, ReviewVerdict, ReportVerdict, VerifyCheck } from './domain/vocabulary.js';
18
+ import type { GateState, GateVerdict } from './domain/gate.js';
19
+ export type { GrilledSpec, ReviewFinding, ReviewVerdict, ReportVerdict, VerifyCheck } from './domain/vocabulary.js';
20
+ export type { GateState } from './domain/gate.js';
21
21
  /** Guard enforcement strength. */
22
22
  export type GuardIntensity = 'remind' | 'warn' | 'block';
23
23
  /** Which discipline gate produced a guard reaction. */
@@ -14,7 +14,7 @@
14
14
  */
15
15
  import type { Context } from '@deepseek-ai/cordis';
16
16
  import type Schema from '@deepseek-ai/schemastery';
17
- import type { GrilledSpec } from '../events.ts';
17
+ import type { GrilledSpec } from '../events.js';
18
18
  export declare const name = "doublecheck-grill";
19
19
  export declare const inject: string[];
20
20
  /** Grill module configuration. */
@@ -16,8 +16,8 @@
16
16
  import type { CommandInvocation, CommandResult } from '@deepseek-ai/dsh-commands';
17
17
  import { Session } from '@deepseek-ai/dsh-session';
18
18
  import type { SessionEvent } from '@deepseek-ai/dsh-session';
19
- import type { TestRunDetection } from '../domain/evidence.ts';
20
- import type { Config, Snapshot } from './index.ts';
19
+ import type { TestRunDetection } from '../domain/evidence.js';
20
+ import type { Config, Snapshot } from './index.js';
21
21
  export declare function hostStampsIgnorable(): boolean;
22
22
  /**
23
23
  * The session's doublecheck master switch: the last `doublecheck/state` event,
@@ -28,9 +28,9 @@ import type { Agent } from '@deepseek-ai/dsh-agent';
28
28
  import type { CommandInvocation, CommandResult } from '@deepseek-ai/dsh-commands';
29
29
  import type { UserMessage } from '@deepseek-ai/dsh-llm';
30
30
  import type Schema from '@deepseek-ai/schemastery';
31
- import type { TestRunDetection } from '../domain/evidence.ts';
32
- import { type GateQuestion, type GateState, type GateVerdict } from '../domain/gate.ts';
33
- import type { GuardProse, ProseLanguage } from './prose.ts';
31
+ import type { TestRunDetection } from '../domain/evidence.js';
32
+ import { type GateQuestion, type GateState, type GateVerdict } from '../domain/gate.js';
33
+ import type { GuardProse, ProseLanguage } from './prose.js';
34
34
  /** The reviewer knobs shared by the consistency and review phases. */
35
35
  export interface GateReviewerConfig {
36
36
  enabled: boolean;
@@ -29,11 +29,11 @@
29
29
  import type { Context } from '@deepseek-ai/cordis';
30
30
  import type { SessionEvent } from '@deepseek-ai/dsh-session';
31
31
  import type Schema from '@deepseek-ai/schemastery';
32
- import { type DisciplineState } from '../domain/stages.ts';
33
- import type { GuardIntensity } from '../events.ts';
34
- import { type ProseLanguage } from './prose.ts';
35
- import { type GateConfig } from './gate.ts';
36
- import { type GateVerdict } from '../domain/gate.ts';
32
+ import { type DisciplineState } from '../domain/stages.js';
33
+ import type { GuardIntensity } from '../events.js';
34
+ import { type ProseLanguage } from './prose.js';
35
+ import { type GateConfig } from './gate.js';
36
+ import { type GateVerdict } from '../domain/gate.js';
37
37
  export declare const name = "doublecheck-guard";
38
38
  export declare const inject: string[];
39
39
  /**
@@ -536,12 +536,14 @@ export function apply(ctx, config) {
536
536
  });
537
537
  // The invariant companion, registered from the main plugin so its checks
538
538
  // see the live detection knobs. Activates only when an invariant registry
539
- // is composed.
539
+ // is composed. The registry binds its internal effect to the service
540
+ // context and throws on a duplicate package name, so the returned disposer
541
+ // is the only unregistration path: hold it on this inject scope's fiber.
540
542
  ctx.inject(['invariants'], (invariantCtx) => {
541
543
  const registry = invariantCtx.get('invariants');
542
544
  if (registry === undefined)
543
545
  return;
544
- registry.register(PACKAGE_NAME, installInvariant({ detection: () => detection }));
546
+ invariantCtx.effect(() => registry.register(PACKAGE_NAME, installInvariant({ detection: () => detection })), 'dsh-doublecheck: invariant companion');
545
547
  });
546
548
  }
547
549
  /** The adversary knobs in the shape the review runner reads. */
@@ -16,8 +16,8 @@ import type { Context } from '@deepseek-ai/cordis';
16
16
  import type { Agent } from '@deepseek-ai/dsh-agent';
17
17
  import type { UserMessage } from '@deepseek-ai/dsh-llm';
18
18
  import type { ObjectJsonSchema } from '@deepseek-ai/dsh-tools';
19
- import type { ReviewFinding, ReviewVerdict } from '../domain/vocabulary.ts';
20
- import { type GuardProse, type ProseLanguage } from './prose.ts';
19
+ import type { ReviewFinding, ReviewVerdict } from '../domain/vocabulary.js';
20
+ import { type GuardProse, type ProseLanguage } from './prose.js';
21
21
  /** The adversary knobs the review runner reads. */
22
22
  export interface AdversaryConfig {
23
23
  adversaryProvider: string;
package/lib/index.d.ts CHANGED
@@ -6,13 +6,13 @@
6
6
  *
7
7
  * @module dsh-doublecheck
8
8
  */
9
- export type { GrilledSpec, GuardIntensity, GuardGate, GuardVerdict } from './events.ts';
10
- export * from './domain/stages.ts';
11
- export * from './domain/evidence.ts';
12
- export * from './domain/vagueness.ts';
13
- export * from './domain/vocabulary.ts';
14
- export * from './domain/report.ts';
15
- export * from './domain/gate.ts';
16
- export { renderSpecMarkdown } from './grill/index.ts';
17
- export { BundledSkillProvider, parseSkillAsset, PROVIDER_NAME } from './grill/provider.ts';
18
- export type * from './types.ts';
9
+ export type { GrilledSpec, GuardIntensity, GuardGate, GuardVerdict } from './events.js';
10
+ export * from './domain/stages.js';
11
+ export * from './domain/evidence.js';
12
+ export * from './domain/vagueness.js';
13
+ export * from './domain/vocabulary.js';
14
+ export * from './domain/report.js';
15
+ export * from './domain/gate.js';
16
+ export { renderSpecMarkdown } from './grill/index.js';
17
+ export { BundledSkillProvider, parseSkillAsset, PROVIDER_NAME } from './grill/provider.js';
18
+ export type * from './types.js';
@@ -23,7 +23,7 @@
23
23
  * @module dsh-doublecheck/invariant
24
24
  */
25
25
  import type { Context } from '@deepseek-ai/cordis';
26
- import type { TestRunDetection } from './domain/evidence.ts';
26
+ import type { TestRunDetection } from './domain/evidence.js';
27
27
  /** Full npm package name owning the reported failures. */
28
28
  export declare const PACKAGE_NAME = "dsh-doublecheck";
29
29
  /** A package-attributed invariant failure reported by the host registry. */
package/lib/types.d.ts CHANGED
@@ -7,8 +7,8 @@
7
7
  * @module dsh-doublecheck/types
8
8
  */
9
9
  import { z as zod } from 'zod';
10
- import type { DisciplineStage, TestColor } from './domain/stages.ts';
11
- import type { GateVerdict } from './domain/gate.ts';
10
+ import type { DisciplineStage, TestColor } from './domain/stages.js';
11
+ import type { GateVerdict } from './domain/gate.js';
12
12
  /** The whole wire value of the `doublecheck` session projection. */
13
13
  export interface DoublecheckView {
14
14
  /** The last discipline stage reached on durable evidence. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-doublecheck",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "Delivery quality gate for DeepSeek Harness: grill the requirements, test the implementation, prove the delivery, and gate the handoff with a deliverable/rework decision.",
5
5
  "packageManager": "pnpm@11.7.0",
6
6
  "repository": {
@@ -51,13 +51,17 @@
51
51
  "LICENSE"
52
52
  ],
53
53
  "scripts": {
54
- "build": "tsc --noEmitOnError",
55
- "prepare": "tsc --noEmitOnError",
56
- "prepublishOnly": "tsc --noEmitOnError && pnpm run test",
54
+ "build": "tsc --noEmitOnError && node scripts/fix-dts.mjs",
55
+ "prepare": "tsc --noEmitOnError && node scripts/fix-dts.mjs",
56
+ "prepublishOnly": "tsc --noEmitOnError && node scripts/fix-dts.mjs && pnpm run test",
57
57
  "typecheck": "tsc --noEmit && tsc -p tsconfig.tests.json",
58
58
  "lint": "eslint src tests",
59
59
  "test": "vitest run",
60
60
  "test:coverage": "vitest run --coverage",
61
+ "verify:skills": "node scripts/verify-skills.mjs",
62
+ "check:readmes": "node scripts/check-readme-sync.mjs",
63
+ "verify:self-contained": "node scripts/verify-self-contained.mjs",
64
+ "verify:artifacts": "node scripts/verify-artifacts.mjs",
61
65
  "pack:check": "pnpm run build && pnpm pack"
62
66
  },
63
67
  "keywords": [
@@ -137,6 +141,7 @@
137
141
  },
138
142
  "devDependencies": {
139
143
  "@deepseek-ai/cordis": "^4.0.1",
144
+ "@deepseek-ai/cordis-plugin-loader": "1.0.2",
140
145
  "@deepseek-ai/dsh-agent": "0.1.0-rc.6",
141
146
  "@deepseek-ai/dsh-commands": "0.1.0-rc.6",
142
147
  "@deepseek-ai/dsh-fs": "0.1.0-rc.6",