@mediadatafusion/pi-workflow-suite 0.0.4 → 0.0.6
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/CHANGELOG.md +17 -0
- package/README.md +23 -34
- package/VERSION +1 -1
- package/docs/assets/pi-workflow-suite-demo.gif +0 -0
- package/package.json +1 -1
- package/scripts/build-package-export.mjs +109 -0
- package/scripts/check-clean-release-tree.sh +45 -0
- package/docs/assets/pi-workflow-suite-card.png +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
All notable public releases will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.0.6] - 2026-05-23
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Updated package media metadata to use versioned package-hosted preview assets.
|
|
10
|
+
|
|
11
|
+
## [0.0.5] - 2026-05-23
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Updated Pi package gallery metadata to use the main Workflow Suite header image for the package preview.
|
|
16
|
+
- Kept README screenshots on repository-hosted image paths for GitHub rendering.
|
|
17
|
+
|
|
18
|
+
### Removed
|
|
19
|
+
|
|
20
|
+
- Removed an unused alternate package preview image asset from the published package.
|
|
21
|
+
|
|
5
22
|
## [0.0.4] - 2026-05-23
|
|
6
23
|
|
|
7
24
|
### Added
|
package/README.md
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
# Pi Workflow Suite
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
<img src="https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@0.0.3/docs/assets/pi-workflow-suite-header.png" alt="Pi Workflow Suite — structured workflow orchestration for Pi" />
|
|
5
|
-
</p>
|
|
3
|
+

|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
<a href="#installation"><img src="https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@0.0.3/docs/assets/readme-link-install.svg" alt="Install" /></a>
|
|
9
|
-
<a href="#quick-start"><img src="https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@0.0.3/docs/assets/readme-link-quick-start.svg" alt="Quick Start" /></a>
|
|
10
|
-
<a href="#core-commands"><img src="https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@0.0.3/docs/assets/readme-link-commands.svg" alt="Commands" /></a>
|
|
11
|
-
<a href="#settings-reference"><img src="https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@0.0.3/docs/assets/readme-link-settings.svg" alt="Settings" /></a>
|
|
12
|
-
</p>
|
|
5
|
+
[](#installation) [](#quick-start) [](#core-commands) [](#settings-reference)
|
|
13
6
|
|
|
14
|
-
**Workflow Suite Version:** `v0.0.
|
|
7
|
+
**Workflow Suite Version:** `v0.0.6`
|
|
15
8
|
|
|
16
9
|
## Overview
|
|
17
10
|
|
|
@@ -23,27 +16,23 @@ Pi itself is intentionally minimal and extensible. Pi Workflow Suite layers an o
|
|
|
23
16
|
|
|
24
17
|
See Pi Workflow Suite in action: structured workflow modes, settings, runtime status, and guided execution inside Pi.
|
|
25
18
|
|
|
26
|
-
https://
|
|
19
|
+
[](https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@0.0.6/docs/assets/pi-workflow-suite-demo.mp4)
|
|
27
20
|
|
|
28
21
|
## Screenshots
|
|
29
22
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
<td><img src="docs/assets/screenshots/05-mission-mode.png" alt="Mission Mode milestone progress" /></td>
|
|
44
|
-
<td><img src="docs/assets/screenshots/06-diagram-mermaid.png" alt="Workflow Suite Mermaid diagram output" /></td>
|
|
45
|
-
</tr>
|
|
46
|
-
</table>
|
|
23
|
+

|
|
24
|
+
|
|
25
|
+

|
|
26
|
+
|
|
27
|
+

|
|
28
|
+
|
|
29
|
+

|
|
30
|
+
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+

|
|
34
|
+
|
|
35
|
+

|
|
47
36
|
|
|
48
37
|
## Contents
|
|
49
38
|
|
|
@@ -1182,10 +1171,10 @@ See `docs/TROUBLESHOOTING.md` for detailed diagnostics.
|
|
|
1182
1171
|
|
|
1183
1172
|
## Versioning
|
|
1184
1173
|
|
|
1185
|
-
The current public preview version is `v0.0.
|
|
1174
|
+
The current public preview version is `v0.0.5`. Version information is intentionally aligned across:
|
|
1186
1175
|
|
|
1187
|
-
- `VERSION` (`v0.0.
|
|
1188
|
-
- `package.json` (`0.0.
|
|
1176
|
+
- `VERSION` (`v0.0.5`),
|
|
1177
|
+
- `package.json` (`0.0.5`),
|
|
1189
1178
|
- `package-lock.json`,
|
|
1190
1179
|
- this README,
|
|
1191
1180
|
- Workflow Suite settings/about output.
|
|
@@ -1217,18 +1206,18 @@ The intended package and repository identities are:
|
|
|
1217
1206
|
https://github.com/MediaDataFusion/pi-workflow-suite
|
|
1218
1207
|
```
|
|
1219
1208
|
|
|
1220
|
-
The current release candidate is prepared as `@mediadatafusion/pi-workflow-suite@0.0.
|
|
1209
|
+
The current release candidate is prepared as `@mediadatafusion/pi-workflow-suite@0.0.5`.
|
|
1221
1210
|
|
|
1222
1211
|
After npm publication, install with:
|
|
1223
1212
|
|
|
1224
1213
|
```bash
|
|
1225
|
-
pi install npm:@mediadatafusion/pi-workflow-suite@0.0.
|
|
1214
|
+
pi install npm:@mediadatafusion/pi-workflow-suite@0.0.5
|
|
1226
1215
|
```
|
|
1227
1216
|
|
|
1228
1217
|
After npm publication, temporary evaluation in a current Pi run can use:
|
|
1229
1218
|
|
|
1230
1219
|
```bash
|
|
1231
|
-
pi -e npm:@mediadatafusion/pi-workflow-suite@0.0.
|
|
1220
|
+
pi -e npm:@mediadatafusion/pi-workflow-suite@0.0.5
|
|
1232
1221
|
```
|
|
1233
1222
|
|
|
1234
1223
|
## Planned Enhancements
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
v0.0.
|
|
1
|
+
v0.0.6
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@mediadatafusion/pi-workflow-suite","version":"0.0.
|
|
1
|
+
{"name":"@mediadatafusion/pi-workflow-suite","version":"0.0.6","description":"Structured workflow orchestration suite for Pi with Standard, Plan, Mission, compaction, diagrams, web access, repo lock, and safety gates.","license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/MediaDataFusion/pi-workflow-suite.git"},"homepage":"https://github.com/MediaDataFusion/pi-workflow-suite#readme","bugs":{"url":"https://github.com/MediaDataFusion/pi-workflow-suite/issues"},"keywords":["pi-package","pi-extension","pi-skill","pi-theme","pi-prompt","pi","pi-coding-agent","workflow","workflows","workflow-suite","workflow-orchestration","agent-workflow","plan-mode","mission-mode","standard-mode","subagents","skills","prompts","extensions","themes"],"type":"module","files":["extensions/","skills/","agents/","config/","docs/assets/","themes/","scripts/install-to-live.sh","scripts/verify-live.sh","scripts/audit-live.sh","scripts/quarantine-live-junk.sh","scripts/backup-live.sh","scripts/audit-settings.sh","scripts/bootstrap-project.sh","scripts/check-clean-release-tree.sh","scripts/build-package-export.mjs","README.md","LICENSE.md","NOTICE","TRADEMARKS.md","CHANGELOG.md","SECURITY.md","SUPPORT.md","CONTRIBUTING.md","VERSION","package-lock.json"],"pi":{"extensions":["./extensions/workflow-modes.ts","./extensions/subagent/index.ts"],"skills":["./skills"],"prompts":["./config/prompts"],"themes":["./themes"],"image":"https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@0.0.6/docs/assets/pi-workflow-suite-header.png","video":"https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@0.0.6/docs/assets/pi-workflow-suite-demo.mp4"},"peerDependencies":{"@earendil-works/pi-agent-core":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*","typebox":"*"},"dependencies":{"@mermaid-js/mermaid-cli":"^11.14.0","beautiful-mermaid":"^1.1.3","sharp":"^0.34.5"},"private":false,"devDependencies":{"@earendil-works/pi-agent-core":"^0.74.0","@earendil-works/pi-ai":"^0.74.0","@earendil-works/pi-coding-agent":"^0.74.0","@earendil-works/pi-tui":"^0.74.0","@types/node":"^25.6.2","typebox":"^1.1.38","typescript":"^6.0.3"},"scripts":{"check:ts":"tsc --noEmit --noCheck","typecheck":"tsc --noEmit","validate":"npm run check:ts && ./scripts/check-clean-release-tree.sh && git diff --check"}}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
3
|
+
import { copyFile, mkdir, readFile, rename, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
import { dirname, join, resolve } from 'node:path';
|
|
6
|
+
import { fileURLToPath } from 'node:url';
|
|
7
|
+
import { spawnSync } from 'node:child_process';
|
|
8
|
+
|
|
9
|
+
const scriptDir = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const repoRoot = resolve(scriptDir, '..');
|
|
11
|
+
|
|
12
|
+
function run(command, args, options = {}) {
|
|
13
|
+
const result = spawnSync(command, args, {
|
|
14
|
+
cwd: options.cwd ?? repoRoot,
|
|
15
|
+
encoding: 'utf8',
|
|
16
|
+
stdio: options.stdio ?? ['ignore', 'pipe', 'inherit'],
|
|
17
|
+
});
|
|
18
|
+
if (result.status !== 0) {
|
|
19
|
+
throw new Error(`${command} ${args.join(' ')} failed with exit code ${result.status}`);
|
|
20
|
+
}
|
|
21
|
+
return result.stdout ?? '';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function parseArgs(argv) {
|
|
25
|
+
const args = { out: undefined, keepPack: false };
|
|
26
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
27
|
+
const arg = argv[index];
|
|
28
|
+
if (arg === '--out') {
|
|
29
|
+
args.out = resolve(argv[index + 1] ?? '');
|
|
30
|
+
index += 1;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (arg === '--keep-pack') {
|
|
34
|
+
args.keepPack = true;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
throw new Error(`Unknown argument: ${arg}`);
|
|
38
|
+
}
|
|
39
|
+
return args;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function cdn(version, assetPath) {
|
|
43
|
+
return `https://cdn.jsdelivr.net/npm/@mediadatafusion/pi-workflow-suite@${version}/${assetPath}`;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function buildPackageReadme(sourceReadme, version) {
|
|
47
|
+
const headerBlock = `# Pi Workflow Suite\n\n${
|
|
48
|
+
`})`
|
|
49
|
+
}\n\n${[
|
|
50
|
+
`[})](#installation)`,
|
|
51
|
+
`[})](#quick-start)`,
|
|
52
|
+
`[})](#core-commands)`,
|
|
53
|
+
`[})](#settings-reference)`,
|
|
54
|
+
].join(' ')}\n\n**Workflow Suite Version:** `;
|
|
55
|
+
|
|
56
|
+
let readme = sourceReadme.replace(
|
|
57
|
+
/^# Pi Workflow Suite\n\n<p align="center">[\s\S]*?\*\*Workflow Suite Version:\*\* /,
|
|
58
|
+
headerBlock,
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
const packageMediaBlock = `## Quick Demo\n\nSee Pi Workflow Suite in action: structured workflow modes, settings, runtime status, and guided execution inside Pi.\n\n[})](${cdn(version, 'docs/assets/pi-workflow-suite-demo.mp4')})\n\n## Screenshots\n\n${[
|
|
62
|
+
['Pi Workflow Suite Mission Home with workflow graphs', 'docs/assets/screenshots/00-mission-home.png'],
|
|
63
|
+
['Pi Workflow Suite startup logo', 'docs/assets/screenshots/01-startup-Logo.png'],
|
|
64
|
+
['Workflow Suite theme settings', 'docs/assets/screenshots/02-theme-settings.png'],
|
|
65
|
+
['Workflow Suite global safety settings', 'docs/assets/screenshots/03-GlobalSafetySettings.png'],
|
|
66
|
+
['Workflow Suite shared sub-agent settings', 'docs/assets/screenshots/04-SharedSubAgentsSettings.png'],
|
|
67
|
+
['Mission Mode milestone progress', 'docs/assets/screenshots/05-mission-mode.png'],
|
|
68
|
+
['Workflow Suite Mermaid diagram output', 'docs/assets/screenshots/06-diagram-mermaid.png'],
|
|
69
|
+
].map(([alt, path]) => `})`).join('\n\n')}\n\n`;
|
|
70
|
+
|
|
71
|
+
readme = readme.replace(/## Quick Demo[\s\S]*?## Contents\n/, `${packageMediaBlock}## Contents\n`);
|
|
72
|
+
return readme;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async function main() {
|
|
76
|
+
const args = parseArgs(process.argv.slice(2));
|
|
77
|
+
const workDir = mkdtempSync(join(tmpdir(), 'pi-workflow-suite-export-'));
|
|
78
|
+
const packDir = join(workDir, 'pack');
|
|
79
|
+
await mkdir(packDir, { recursive: true });
|
|
80
|
+
|
|
81
|
+
const packOutput = run('npm', ['pack', '--pack-destination', packDir]);
|
|
82
|
+
const tarballName = packOutput.trim().split('\n').filter(Boolean).at(-1);
|
|
83
|
+
if (!tarballName) {
|
|
84
|
+
throw new Error('npm pack did not report a tarball name');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
run('tar', ['-xzf', join(packDir, tarballName), '-C', workDir]);
|
|
88
|
+
const extractedDir = join(workDir, 'package');
|
|
89
|
+
const packageJson = JSON.parse(await readFile(join(extractedDir, 'package.json'), 'utf8'));
|
|
90
|
+
const sourceReadme = await readFile(join(repoRoot, 'README.md'), 'utf8');
|
|
91
|
+
await writeFile(join(extractedDir, 'README.md'), buildPackageReadme(sourceReadme, packageJson.version));
|
|
92
|
+
|
|
93
|
+
const outputDir = args.out ?? join(workDir, 'export');
|
|
94
|
+
rmSync(outputDir, { recursive: true, force: true });
|
|
95
|
+
await mkdir(dirname(outputDir), { recursive: true });
|
|
96
|
+
await rename(extractedDir, outputDir);
|
|
97
|
+
|
|
98
|
+
if (args.keepPack) {
|
|
99
|
+
await mkdir(join(outputDir, '.pack-source'), { recursive: true });
|
|
100
|
+
await copyFile(join(packDir, tarballName), join(outputDir, '.pack-source', tarballName));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
console.log(outputDir);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
main().catch((error) => {
|
|
107
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
108
|
+
process.exit(1);
|
|
109
|
+
});
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
5
|
+
cd "$ROOT"
|
|
6
|
+
|
|
7
|
+
fail=0
|
|
8
|
+
report() {
|
|
9
|
+
printf 'ERROR: %s\n' "$1" >&2
|
|
10
|
+
fail=1
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if [[ -e AGENTS.md && -n "$(git ls-files AGENTS.md)" ]]; then report 'AGENTS.md must not be present on clean release main'; fi
|
|
14
|
+
if [[ -e .github && -n "$(git ls-files .github)" ]]; then report '.github/ must not be tracked on clean release main'; fi
|
|
15
|
+
if [[ -e .factory && -n "$(git ls-files .factory)" ]]; then report '.factory/ must not be tracked on clean release main'; fi
|
|
16
|
+
if [[ -e .kilo && -n "$(git ls-files .kilo)" ]]; then report '.kilo/ must not be tracked on clean release main'; fi
|
|
17
|
+
if [[ -e .cursor && -n "$(git ls-files .cursor)" ]]; then report '.cursor/ must not be tracked on clean release main'; fi
|
|
18
|
+
|
|
19
|
+
while IFS= read -r path; do
|
|
20
|
+
case "$path" in
|
|
21
|
+
agents/*|config/*|extensions/*|skills/*|docs/assets/*|themes/*|scripts/install-to-live.sh|scripts/verify-live.sh|scripts/audit-live.sh|scripts/quarantine-live-junk.sh|scripts/backup-live.sh|scripts/audit-settings.sh|scripts/bootstrap-project.sh|scripts/check-clean-release-tree.sh|scripts/build-package-export.mjs|README.md|CHANGELOG.md|CONTRIBUTING.md|LICENSE.md|NOTICE|SECURITY.md|SUPPORT.md|TRADEMARKS.md|VERSION|package.json|package-lock.json|tsconfig.json|.gitignore)
|
|
22
|
+
;;
|
|
23
|
+
docs/*)
|
|
24
|
+
report "non-asset docs file is not allowed: $path"
|
|
25
|
+
;;
|
|
26
|
+
scripts/test-*|scripts/sync-from-live.sh)
|
|
27
|
+
report "internal script is not allowed: $path"
|
|
28
|
+
;;
|
|
29
|
+
.github/*|AGENTS.md|.factory/*|.kilo/*|.cursor/*)
|
|
30
|
+
report "internal path is not allowed: $path"
|
|
31
|
+
;;
|
|
32
|
+
*auth.json|*settings.json|*workflow-settings.json|*active.json|workflows/*|*sessions/*|*missions/*|*plans/*|*logs/*|*.env|*.env.*|*.DS_Store)
|
|
33
|
+
report "runtime/private path is not allowed: $path"
|
|
34
|
+
;;
|
|
35
|
+
*)
|
|
36
|
+
report "path is outside clean release allowlist: $path"
|
|
37
|
+
;;
|
|
38
|
+
esac
|
|
39
|
+
done < <(git ls-files | sort)
|
|
40
|
+
|
|
41
|
+
if [[ "$fail" -ne 0 ]]; then
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
printf 'OK: clean release tree allowlist passed\n'
|
|
Binary file
|