driftseal 3.1.0 → 3.2.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.
package/README.md CHANGED
@@ -47,6 +47,9 @@ npm install --global driftseal
47
47
  driftseal --version
48
48
  ```
49
49
 
50
+ The package also installs `ds` as a short alias for `driftseal`. Both commands use
51
+ the same CLI; for example, `ds status` is equivalent to `driftseal status`.
52
+
50
53
  From a source checkout:
51
54
 
52
55
  ```sh
package/README.zh-CN.md CHANGED
@@ -41,6 +41,9 @@ npm install --global driftseal
41
41
  driftseal --version
42
42
  ```
43
43
 
44
+ 安装后也可以用短别名 `ds`,它与 `driftseal` 使用同一个 CLI 入口。
45
+ 例如,`ds status` 等同于 `driftseal status`。
46
+
44
47
  在源码 checkout 中使用:
45
48
 
46
49
  ```sh
package/bin/driftseal.js CHANGED
@@ -6781,6 +6781,8 @@ const commands = {
6781
6781
 
6782
6782
  Outcome-level write-ahead log for agent sessions.
6783
6783
 
6784
+ The ds command is an alias for driftseal; all commands and options are identical.
6785
+
6784
6786
  usage:
6785
6787
  driftseal begin "<outcome>" [--accept "<observable result>"] [--verify "<command>"]
6786
6788
  [--decision <id>] [--force]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "driftseal",
3
- "version": "3.1.0",
3
+ "version": "3.2.0",
4
4
  "description": "Seal outcomes, verification, and decisions into an auditable workflow for agentic coding",
5
5
  "keywords": [
6
6
  "driftseal",
@@ -26,6 +26,7 @@
26
26
  "main": "index.js",
27
27
  "bin": {
28
28
  "driftseal": "bin/driftseal.js",
29
+ "ds": "bin/driftseal.js",
29
30
  "driftseal-mcp": "bin/driftseal-mcp.js"
30
31
  },
31
32
  "directories": {
@@ -112,16 +112,32 @@ try {
112
112
  DRIFTSEAL_HOME: home,
113
113
  DRIFTSEAL_DECISION_HOME: path.join(home, 'madr'),
114
114
  };
115
+ for (const name of ['driftseal', 'ds', 'driftseal-mcp']) {
116
+ const executable = process.platform === 'win32' ? `${name}.cmd` : name;
117
+ assert.equal(
118
+ fs.existsSync(path.join(consumer, 'node_modules', '.bin', executable)),
119
+ true,
120
+ `${name} is installed as an executable`
121
+ );
122
+ }
123
+ function runInstalled(name, args) {
124
+ return runNpm(['exec', '--offline', '--prefix', consumer, '--', name, ...args], {
125
+ cwd: sandbox,
126
+ env,
127
+ });
128
+ }
129
+ const metadata = require(path.join(installed, 'package.json'));
130
+ for (const name of ['driftseal', 'ds']) {
131
+ assert.equal(runInstalled(name, ['--version']), `${metadata.version}\n`);
132
+ }
133
+ const help = runInstalled('driftseal', ['--help']);
134
+ assert.match(help, /The ds command is an alias for driftseal/);
135
+ assert.equal(runInstalled('ds', ['--help']), help);
136
+
115
137
  const cli = path.join(installed, 'bin', 'driftseal.js');
116
- run(process.execPath, [cli, 'begin', 'packaged sqlite smoke'], {
117
- cwd: sandbox,
118
- env,
119
- });
120
- run(
121
- process.execPath,
122
- [cli, 'end', '--status', 'abandoned', '--note', 'packaged smoke'],
123
- { cwd: sandbox, env }
124
- );
138
+ runInstalled('ds', ['begin', 'packaged sqlite smoke']);
139
+ assert.match(runInstalled('driftseal', ['status']), /packaged sqlite smoke/);
140
+ runInstalled('driftseal', ['end', '--status', 'abandoned', '--note', 'packaged smoke']);
125
141
  const logged = spawnSync(process.execPath, [cli, 'log', '--last', '1'], {
126
142
  cwd: sandbox,
127
143
  env,
@@ -130,6 +146,7 @@ try {
130
146
  });
131
147
  assert.equal(logged.status, 0, logged.stderr);
132
148
  assert.match(logged.stdout, /packaged sqlite smoke/);
149
+ assert.equal(runInstalled('ds', ['log', '--last', '1']), logged.stdout);
133
150
  assert.doesNotMatch(logged.stderr, /SQLite is an experimental feature/);
134
151
  assert.equal(fs.existsSync(indexFile), true);
135
152
  fs.writeFileSync(indexFile, 'corrupt package smoke index');