@helloworlkd/pam-cli 0.1.18 → 0.1.20
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 +4 -4
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +14 -20
- package/dist/commands/search.js.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/commands/upgrade-state.d.ts +0 -24
- package/dist/commands/upgrade-state.d.ts.map +0 -1
- package/dist/commands/upgrade-state.js +0 -52
- package/dist/commands/upgrade-state.js.map +0 -1
- package/dist/commands/upgrade.d.ts +0 -3
- package/dist/commands/upgrade.d.ts.map +0 -1
- package/dist/commands/upgrade.js +0 -78
- package/dist/commands/upgrade.js.map +0 -1
- package/dist/self-upgrade.d.ts +0 -3
- package/dist/self-upgrade.d.ts.map +0 -1
- package/dist/self-upgrade.js +0 -203
- package/dist/self-upgrade.js.map +0 -1
package/README.md
CHANGED
|
@@ -12,14 +12,14 @@ npm install -g @helloworlkd/pam-cli
|
|
|
12
12
|
|
|
13
13
|
This installs the `pam` command.
|
|
14
14
|
|
|
15
|
-
For future global updates,
|
|
15
|
+
For future global updates, stop any running `pam ui` or `pam server start`
|
|
16
|
+
processes, then run:
|
|
16
17
|
|
|
17
18
|
```bash
|
|
18
|
-
pam
|
|
19
|
+
npm install -g @helloworlkd/pam-cli@latest
|
|
19
20
|
```
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
Windows native-file locks during updates.
|
|
22
|
+
Stopping PAM services first avoids Windows native-file locks during updates.
|
|
23
23
|
|
|
24
24
|
For automatic project bootstrap:
|
|
25
25
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAuGrD"}
|
package/dist/commands/search.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SemanticIndex, getProjectMemoryPath, hybridSearchMemories, listMemories, readMemory, semanticMemoryText, } from '@helloworlkd/pam-core';
|
|
2
2
|
export function registerSearchCommand(program) {
|
|
3
3
|
program
|
|
4
4
|
.command('search [query]')
|
|
@@ -20,7 +20,7 @@ export function registerSearchCommand(program) {
|
|
|
20
20
|
const semanticIndex = new SemanticIndex(basePath);
|
|
21
21
|
const memories = (await listMemories(basePath)).filter((memory) => memory.metadata.status === 'active');
|
|
22
22
|
for (const memory of memories) {
|
|
23
|
-
await semanticIndex.indexMemory(memory.metadata.id, memory
|
|
23
|
+
await semanticIndex.indexMemory(memory.metadata.id, semanticMemoryText(memory));
|
|
24
24
|
}
|
|
25
25
|
const semanticResults = await semanticIndex.search(query, limit);
|
|
26
26
|
semanticIndex.close();
|
|
@@ -55,34 +55,28 @@ export function registerSearchCommand(program) {
|
|
|
55
55
|
}
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
58
|
-
await
|
|
59
|
-
const index = new MemoryIndex(basePath);
|
|
60
|
-
let usedNaturalFallback = false;
|
|
61
|
-
let results = index.search({
|
|
58
|
+
const results = await hybridSearchMemories(basePath, {
|
|
62
59
|
query,
|
|
63
60
|
type: options.type,
|
|
64
61
|
tag: options.tag,
|
|
65
62
|
limit,
|
|
66
|
-
natural: false,
|
|
67
63
|
});
|
|
68
|
-
if (query && results.length === 0) {
|
|
69
|
-
results = index.search({
|
|
70
|
-
query,
|
|
71
|
-
type: options.type,
|
|
72
|
-
tag: options.tag,
|
|
73
|
-
limit,
|
|
74
|
-
natural: true,
|
|
75
|
-
});
|
|
76
|
-
usedNaturalFallback = results.length > 0;
|
|
77
|
-
}
|
|
78
|
-
index.close();
|
|
79
64
|
if (results.length === 0) {
|
|
80
65
|
console.log(query
|
|
81
|
-
? 'No memories found. Try --semantic for embedding
|
|
66
|
+
? 'No memories found. Try broader words or --semantic for embedding-only diagnostics.'
|
|
82
67
|
: 'No memories found');
|
|
83
68
|
return;
|
|
84
69
|
}
|
|
85
|
-
|
|
70
|
+
const usedExact = results.some((result) => result.match.sources.includes('lexical-exact'));
|
|
71
|
+
const usedNatural = results.some((result) => result.match.sources.includes('lexical-natural'));
|
|
72
|
+
const usedSemantic = results.some((result) => result.match.sources.includes('semantic'));
|
|
73
|
+
if (usedSemantic && (usedExact || usedNatural)) {
|
|
74
|
+
console.log('Showing hybrid lexical and semantic matches.\n');
|
|
75
|
+
}
|
|
76
|
+
else if (usedSemantic) {
|
|
77
|
+
console.log('No strong lexical hits; showing semantic matches.\n');
|
|
78
|
+
}
|
|
79
|
+
else if (usedNatural && !usedExact) {
|
|
86
80
|
console.log('No exact lexical hits; showing related matches from tags and synonyms.\n');
|
|
87
81
|
}
|
|
88
82
|
for (const result of results) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AACA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -32,7 +32,6 @@ import { registerSupersedeCommand } from './commands/supersede.js';
|
|
|
32
32
|
import { registerDebugCommand } from './commands/debug.js';
|
|
33
33
|
import { registerHookCommand } from './commands/hook.js';
|
|
34
34
|
import { registerIntelligenceCommand } from './commands/intelligence.js';
|
|
35
|
-
import { registerUpgradeCommand } from './commands/upgrade.js';
|
|
36
35
|
import { getCliVersion } from './version.js';
|
|
37
36
|
const program = new Command();
|
|
38
37
|
program.name('pam').description('Portable AI Memory CLI').version(getCliVersion());
|
|
@@ -68,6 +67,5 @@ registerSupersedeCommand(program);
|
|
|
68
67
|
registerDebugCommand(program);
|
|
69
68
|
registerHookCommand(program);
|
|
70
69
|
registerIntelligenceCommand(program);
|
|
71
|
-
registerUpgradeCommand(program);
|
|
72
70
|
program.parse();
|
|
73
71
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helloworlkd/pam-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.20",
|
|
4
4
|
"description": "PAM CLI - Command line interface for PAM",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
46
46
|
"commander": "^15.0.0",
|
|
47
47
|
"zod": "^4.4.3",
|
|
48
|
-
"@helloworlkd/pam-core": "^0.1.
|
|
49
|
-
"@helloworlkd/pam-
|
|
50
|
-
"@helloworlkd/pam-
|
|
48
|
+
"@helloworlkd/pam-core": "^0.1.11",
|
|
49
|
+
"@helloworlkd/pam-api": "^0.1.17",
|
|
50
|
+
"@helloworlkd/pam-protocol": "^0.1.11"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@types/node": "^25.9.3"
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export type UpgradePhase = 'queued' | 'waiting' | 'stopping-services' | 'installing' | 'succeeded' | 'failed';
|
|
2
|
-
export interface UpgradeStatus {
|
|
3
|
-
runId: string;
|
|
4
|
-
phase: UpgradePhase;
|
|
5
|
-
message: string;
|
|
6
|
-
packageSpec: string;
|
|
7
|
-
npmCommand: string;
|
|
8
|
-
startedAt: string;
|
|
9
|
-
updatedAt: string;
|
|
10
|
-
logPath: string;
|
|
11
|
-
stoppedServices?: number;
|
|
12
|
-
exitCode?: number;
|
|
13
|
-
}
|
|
14
|
-
export interface UpgradeStatePaths {
|
|
15
|
-
dir: string;
|
|
16
|
-
statusPath: string;
|
|
17
|
-
logPath: string;
|
|
18
|
-
}
|
|
19
|
-
export declare function getUpgradeStatePaths(runId?: string): UpgradeStatePaths;
|
|
20
|
-
export declare function writeUpgradeStatus(status: UpgradeStatus): void;
|
|
21
|
-
export declare function readUpgradeStatus(runId?: string): UpgradeStatus | null;
|
|
22
|
-
export declare function appendUpgradeLog(logPath: string, message: string): void;
|
|
23
|
-
export declare function formatUpgradeStatus(status: UpgradeStatus | null): string;
|
|
24
|
-
//# sourceMappingURL=upgrade-state.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-state.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade-state.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,SAAS,GACT,mBAAmB,GACnB,YAAY,GACZ,WAAW,GACX,QAAQ,CAAA;AAEZ,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,YAAY,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,SAAW,GAAG,iBAAiB,CAQxE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAK9D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,SAAW,GAAG,aAAa,GAAG,IAAI,CAIxE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGvE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,CAsBxE"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
-
import { tmpdir } from 'node:os';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
export function getUpgradeStatePaths(runId = 'latest') {
|
|
5
|
-
const dir = process.env.PAM_UPGRADE_STATE_DIR ?? join(tmpdir(), 'pam-upgrade');
|
|
6
|
-
const suffix = runId === 'latest' ? 'latest' : sanitizeRunId(runId);
|
|
7
|
-
return {
|
|
8
|
-
dir,
|
|
9
|
-
statusPath: join(dir, `${suffix}.json`),
|
|
10
|
-
logPath: join(dir, `${suffix}.log`),
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export function writeUpgradeStatus(status) {
|
|
14
|
-
mkdirSync(getUpgradeStatePaths().dir, { recursive: true });
|
|
15
|
-
const paths = getUpgradeStatePaths(status.runId);
|
|
16
|
-
writeFileSync(paths.statusPath, `${JSON.stringify(status, null, 2)}\n`, 'utf-8');
|
|
17
|
-
writeFileSync(getUpgradeStatePaths().statusPath, `${JSON.stringify(status, null, 2)}\n`, 'utf-8');
|
|
18
|
-
}
|
|
19
|
-
export function readUpgradeStatus(runId = 'latest') {
|
|
20
|
-
const path = getUpgradeStatePaths(runId).statusPath;
|
|
21
|
-
if (!existsSync(path))
|
|
22
|
-
return null;
|
|
23
|
-
return JSON.parse(readFileSync(path, 'utf-8'));
|
|
24
|
-
}
|
|
25
|
-
export function appendUpgradeLog(logPath, message) {
|
|
26
|
-
mkdirSync(getUpgradeStatePaths().dir, { recursive: true });
|
|
27
|
-
appendFileSync(logPath, message, 'utf-8');
|
|
28
|
-
}
|
|
29
|
-
export function formatUpgradeStatus(status) {
|
|
30
|
-
if (!status)
|
|
31
|
-
return 'No PAM upgrade status has been recorded yet.';
|
|
32
|
-
const lines = [
|
|
33
|
-
`PAM upgrade ${status.runId}`,
|
|
34
|
-
`Phase: ${status.phase}`,
|
|
35
|
-
`Package: ${status.packageSpec}`,
|
|
36
|
-
`npm: ${status.npmCommand}`,
|
|
37
|
-
`Updated: ${status.updatedAt}`,
|
|
38
|
-
`Message: ${status.message}`,
|
|
39
|
-
`Log: ${status.logPath}`,
|
|
40
|
-
];
|
|
41
|
-
if (typeof status.stoppedServices === 'number') {
|
|
42
|
-
lines.push(`Stopped services: ${status.stoppedServices}`);
|
|
43
|
-
}
|
|
44
|
-
if (typeof status.exitCode === 'number') {
|
|
45
|
-
lines.push(`Exit code: ${status.exitCode}`);
|
|
46
|
-
}
|
|
47
|
-
return lines.join('\n');
|
|
48
|
-
}
|
|
49
|
-
function sanitizeRunId(runId) {
|
|
50
|
-
return runId.replace(/[^a-zA-Z0-9_.-]/g, '-');
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=upgrade-state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-state.js","sourceRoot":"","sources":["../../src/commands/upgrade-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAkBnC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAsEtD"}
|
package/dist/commands/upgrade.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import { dirname, join } from 'node:path';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import { appendUpgradeLog, formatUpgradeStatus, getUpgradeStatePaths, readUpgradeStatus, writeUpgradeStatus, } from './upgrade-state.js';
|
|
5
|
-
const CLI_DIST_DIR = dirname(fileURLToPath(import.meta.url));
|
|
6
|
-
export function registerUpgradeCommand(program) {
|
|
7
|
-
const upgrade = program
|
|
8
|
-
.command('upgrade')
|
|
9
|
-
.description('Update the global PAM CLI without leaving running services locked')
|
|
10
|
-
.option('--package <spec>', 'Package spec to install', '@helloworlkd/pam-cli@latest')
|
|
11
|
-
.option('--npm <command>', 'npm executable to use')
|
|
12
|
-
.option('--dry-run', 'Show the update steps without installing')
|
|
13
|
-
.action((options) => {
|
|
14
|
-
const runId = `upgrade-${Date.now()}`;
|
|
15
|
-
const startedAt = new Date().toISOString();
|
|
16
|
-
const paths = getUpgradeStatePaths(runId);
|
|
17
|
-
const updaterPath = join(CLI_DIST_DIR, '../self-upgrade.js');
|
|
18
|
-
const args = [updaterPath, '--package', options.package ?? '@helloworlkd/pam-cli@latest'];
|
|
19
|
-
if (options.npm)
|
|
20
|
-
args.push('--npm', options.npm);
|
|
21
|
-
if (options.dryRun)
|
|
22
|
-
args.push('--dry-run');
|
|
23
|
-
args.push('--run-id', runId, '--log-path', paths.logPath, '--started-at', startedAt);
|
|
24
|
-
const child = spawn(process.execPath, args, {
|
|
25
|
-
detached: !options.dryRun,
|
|
26
|
-
stdio: options.dryRun ? 'inherit' : 'ignore',
|
|
27
|
-
windowsHide: false,
|
|
28
|
-
});
|
|
29
|
-
if (options.dryRun) {
|
|
30
|
-
child.on('exit', (code) => {
|
|
31
|
-
process.exit(code ?? 0);
|
|
32
|
-
});
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
const status = {
|
|
36
|
-
runId,
|
|
37
|
-
phase: 'queued',
|
|
38
|
-
message: 'Updater process started in the background.',
|
|
39
|
-
packageSpec: options.package ?? '@helloworlkd/pam-cli@latest',
|
|
40
|
-
npmCommand: options.npm ?? (process.platform === 'win32' ? 'npm.cmd' : 'npm'),
|
|
41
|
-
startedAt,
|
|
42
|
-
updatedAt: startedAt,
|
|
43
|
-
logPath: paths.logPath,
|
|
44
|
-
};
|
|
45
|
-
writeUpgradeStatus(status);
|
|
46
|
-
appendUpgradeLog(paths.logPath, `[${startedAt}] queued: ${status.message}\n`);
|
|
47
|
-
child.unref();
|
|
48
|
-
console.log(`PAM upgrade started in the background (${runId}).`);
|
|
49
|
-
console.log('Progress: queued -> stopping services -> npm install -> done.');
|
|
50
|
-
console.log(`Status file: ${paths.statusPath}`);
|
|
51
|
-
console.log(`Log file: ${paths.logPath}`);
|
|
52
|
-
console.log(`Follow live: ${formatLogFollowCommand(paths.logPath)}`);
|
|
53
|
-
});
|
|
54
|
-
upgrade
|
|
55
|
-
.command('status')
|
|
56
|
-
.description('Show the latest PAM upgrade status')
|
|
57
|
-
.action(() => {
|
|
58
|
-
console.log(formatUpgradeStatus(readUpgradeStatus()));
|
|
59
|
-
});
|
|
60
|
-
upgrade
|
|
61
|
-
.command('log')
|
|
62
|
-
.description('Show the latest PAM upgrade log path')
|
|
63
|
-
.action(() => {
|
|
64
|
-
const status = readUpgradeStatus();
|
|
65
|
-
if (!status) {
|
|
66
|
-
console.log('No PAM upgrade log has been recorded yet.');
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
console.log(status.logPath);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
function formatLogFollowCommand(logPath) {
|
|
73
|
-
if (process.platform === 'win32') {
|
|
74
|
-
return `Get-Content -Wait -LiteralPath "${logPath}"`;
|
|
75
|
-
}
|
|
76
|
-
return `tail -f "${logPath}"`;
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=upgrade.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
|
package/dist/self-upgrade.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"self-upgrade.d.ts","sourceRoot":"","sources":["../src/self-upgrade.ts"],"names":[],"mappings":""}
|
package/dist/self-upgrade.js
DELETED
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { execFile, spawn } from 'node:child_process';
|
|
3
|
-
import { setTimeout as delay } from 'node:timers/promises';
|
|
4
|
-
import { appendUpgradeLog, getUpgradeStatePaths, writeUpgradeStatus, } from './commands/upgrade-state.js';
|
|
5
|
-
const ownPid = process.pid;
|
|
6
|
-
main().catch((error) => {
|
|
7
|
-
console.error(error instanceof Error ? error.message : String(error));
|
|
8
|
-
process.exit(1);
|
|
9
|
-
});
|
|
10
|
-
async function main() {
|
|
11
|
-
const options = parseArgs(process.argv.slice(2));
|
|
12
|
-
try {
|
|
13
|
-
recordProgress(options, 'waiting', 'Waiting for the launcher process to exit.');
|
|
14
|
-
if (options.waitMs > 0) {
|
|
15
|
-
await delay(options.waitMs);
|
|
16
|
-
}
|
|
17
|
-
recordProgress(options, 'stopping-services', 'Stopping running PAM UI/MCP services.');
|
|
18
|
-
const stopped = await stopRunningPAMServices(options.dryRun);
|
|
19
|
-
recordProgress(options, 'stopping-services', `Stopped ${stopped.length} running PAM service${stopped.length === 1 ? '' : 's'}.`, { stoppedServices: stopped.length });
|
|
20
|
-
const args = ['install', '-g', options.packageSpec];
|
|
21
|
-
recordProgress(options, 'installing', `Running: ${options.npmCommand} ${args.join(' ')}`, {
|
|
22
|
-
stoppedServices: stopped.length,
|
|
23
|
-
});
|
|
24
|
-
if (options.dryRun) {
|
|
25
|
-
recordProgress(options, 'succeeded', 'Dry run complete.', { stoppedServices: stopped.length });
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
await execFileLogged(options.npmCommand, args, options);
|
|
29
|
-
recordProgress(options, 'succeeded', 'PAM upgrade completed.', {
|
|
30
|
-
stoppedServices: stopped.length,
|
|
31
|
-
exitCode: 0,
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
recordProgress(options, 'failed', error instanceof Error ? error.message : String(error), {
|
|
36
|
-
exitCode: 1,
|
|
37
|
-
});
|
|
38
|
-
throw error;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function parseArgs(args) {
|
|
42
|
-
const options = {
|
|
43
|
-
packageSpec: '@helloworlkd/pam-cli@latest',
|
|
44
|
-
npmCommand: process.platform === 'win32' ? 'npm.cmd' : 'npm',
|
|
45
|
-
waitMs: 1000,
|
|
46
|
-
dryRun: false,
|
|
47
|
-
runId: `upgrade-${Date.now()}`,
|
|
48
|
-
logPath: '',
|
|
49
|
-
startedAt: new Date().toISOString(),
|
|
50
|
-
};
|
|
51
|
-
for (let index = 0; index < args.length; index += 1) {
|
|
52
|
-
const arg = args[index];
|
|
53
|
-
if (arg === '--package' && args[index + 1]) {
|
|
54
|
-
options.packageSpec = args[index + 1];
|
|
55
|
-
index += 1;
|
|
56
|
-
}
|
|
57
|
-
else if (arg === '--npm' && args[index + 1]) {
|
|
58
|
-
options.npmCommand = args[index + 1];
|
|
59
|
-
index += 1;
|
|
60
|
-
}
|
|
61
|
-
else if (arg === '--wait-ms' && args[index + 1]) {
|
|
62
|
-
const waitMs = Number.parseInt(args[index + 1], 10);
|
|
63
|
-
if (Number.isFinite(waitMs) && waitMs >= 0)
|
|
64
|
-
options.waitMs = waitMs;
|
|
65
|
-
index += 1;
|
|
66
|
-
}
|
|
67
|
-
else if (arg === '--dry-run') {
|
|
68
|
-
options.dryRun = true;
|
|
69
|
-
}
|
|
70
|
-
else if (arg === '--run-id' && args[index + 1]) {
|
|
71
|
-
options.runId = args[index + 1];
|
|
72
|
-
index += 1;
|
|
73
|
-
}
|
|
74
|
-
else if (arg === '--log-path' && args[index + 1]) {
|
|
75
|
-
options.logPath = args[index + 1];
|
|
76
|
-
index += 1;
|
|
77
|
-
}
|
|
78
|
-
else if (arg === '--started-at' && args[index + 1]) {
|
|
79
|
-
options.startedAt = args[index + 1];
|
|
80
|
-
index += 1;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (!options.logPath) {
|
|
84
|
-
options.logPath = getUpgradeStatePaths(options.runId).logPath;
|
|
85
|
-
}
|
|
86
|
-
return options;
|
|
87
|
-
}
|
|
88
|
-
function recordProgress(options, phase, message, extra = {}) {
|
|
89
|
-
const status = createStatus(options, phase, message, extra);
|
|
90
|
-
writeUpgradeStatus(status);
|
|
91
|
-
const line = `[${status.updatedAt}] ${phase}: ${message}\n`;
|
|
92
|
-
appendUpgradeLog(options.logPath, line);
|
|
93
|
-
console.log(message);
|
|
94
|
-
}
|
|
95
|
-
function createStatus(options, phase, message, extra = {}) {
|
|
96
|
-
return {
|
|
97
|
-
runId: options.runId,
|
|
98
|
-
phase,
|
|
99
|
-
message,
|
|
100
|
-
packageSpec: options.packageSpec,
|
|
101
|
-
npmCommand: options.npmCommand,
|
|
102
|
-
startedAt: options.startedAt,
|
|
103
|
-
updatedAt: new Date().toISOString(),
|
|
104
|
-
logPath: options.logPath,
|
|
105
|
-
...extra,
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
async function stopRunningPAMServices(dryRun) {
|
|
109
|
-
if (process.platform === 'win32') {
|
|
110
|
-
return stopWindowsPAMServices(dryRun);
|
|
111
|
-
}
|
|
112
|
-
return stopUnixPAMServices(dryRun);
|
|
113
|
-
}
|
|
114
|
-
function stopWindowsPAMServices(dryRun) {
|
|
115
|
-
const command = `
|
|
116
|
-
$ownPid = ${ownPid}
|
|
117
|
-
$processes = Get-CimInstance Win32_Process -Filter "name = 'node.exe'" |
|
|
118
|
-
Where-Object {
|
|
119
|
-
$_.ProcessId -ne $ownPid -and
|
|
120
|
-
$_.CommandLine -match 'pam-cli[\\\\/]dist[\\\\/]index\\.js' -and
|
|
121
|
-
($_.CommandLine -match '\\sui(\\s|$)' -or $_.CommandLine -match '\\sserver\\s+start(\\s|$)')
|
|
122
|
-
}
|
|
123
|
-
$ids = @($processes | ForEach-Object { $_.ProcessId })
|
|
124
|
-
if (${dryRun ? '$false' : '$true'} -and $ids.Count -gt 0) {
|
|
125
|
-
Stop-Process -Id $ids -Force -ErrorAction SilentlyContinue
|
|
126
|
-
}
|
|
127
|
-
$ids -join ','
|
|
128
|
-
`;
|
|
129
|
-
return new Promise((resolve) => {
|
|
130
|
-
execFile('powershell', ['-NoProfile', '-Command', command], (error, stdout) => {
|
|
131
|
-
if (error) {
|
|
132
|
-
resolve([]);
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
resolve(parsePidList(stdout));
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
function stopUnixPAMServices(dryRun) {
|
|
140
|
-
const script = `
|
|
141
|
-
set -e
|
|
142
|
-
ids="$(ps -eo pid=,args= | awk '/pam-cli\\/dist\\/index\\.js/ && (/ ui( |$)/ || / server start( |$)/) {print $1}' | grep -v "^${ownPid}$" || true)"
|
|
143
|
-
if [ -n "$ids" ] && [ "${dryRun ? '0' : '1'}" = "1" ]; then
|
|
144
|
-
kill $ids 2>/dev/null || true
|
|
145
|
-
fi
|
|
146
|
-
printf "%s" "$ids" | tr '\\n' ','
|
|
147
|
-
`;
|
|
148
|
-
return new Promise((resolve) => {
|
|
149
|
-
execFile('sh', ['-c', script], (error, stdout) => {
|
|
150
|
-
if (error) {
|
|
151
|
-
resolve([]);
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
resolve(parsePidList(stdout));
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
function parsePidList(value) {
|
|
159
|
-
return value
|
|
160
|
-
.split(/[,\s]+/)
|
|
161
|
-
.map((item) => Number.parseInt(item, 10))
|
|
162
|
-
.filter((pid) => Number.isFinite(pid));
|
|
163
|
-
}
|
|
164
|
-
function execFileLogged(command, args, options) {
|
|
165
|
-
return new Promise((resolve, reject) => {
|
|
166
|
-
const invocation = getSpawnInvocation(command, args);
|
|
167
|
-
const child = spawn(invocation.command, invocation.args, {
|
|
168
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
169
|
-
windowsHide: false,
|
|
170
|
-
});
|
|
171
|
-
child.stdout.on('data', (chunk) => {
|
|
172
|
-
process.stdout.write(chunk);
|
|
173
|
-
appendUpgradeLog(options.logPath, chunk.toString('utf-8'));
|
|
174
|
-
});
|
|
175
|
-
child.stderr.on('data', (chunk) => {
|
|
176
|
-
process.stderr.write(chunk);
|
|
177
|
-
appendUpgradeLog(options.logPath, chunk.toString('utf-8'));
|
|
178
|
-
});
|
|
179
|
-
child.on('error', reject);
|
|
180
|
-
child.on('exit', (code, signal) => {
|
|
181
|
-
if (code === 0) {
|
|
182
|
-
resolve();
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
reject(new Error(`${command} exited with ${signal ?? `code ${code ?? 1}`}`));
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
function getSpawnInvocation(command, args) {
|
|
190
|
-
if (process.platform === 'win32' && /\.(?:cmd|bat)$/i.test(command)) {
|
|
191
|
-
return {
|
|
192
|
-
command: process.env.ComSpec ?? 'cmd.exe',
|
|
193
|
-
args: ['/d', '/s', '/c', [command, ...args].map(quoteWindowsCommandArg).join(' ')],
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
return { command, args };
|
|
197
|
-
}
|
|
198
|
-
function quoteWindowsCommandArg(value) {
|
|
199
|
-
if (!/[\s"&()<>^|]/.test(value))
|
|
200
|
-
return value;
|
|
201
|
-
return `"${value.replace(/"/g, '\\"')}"`;
|
|
202
|
-
}
|
|
203
|
-
//# sourceMappingURL=self-upgrade.js.map
|
package/dist/self-upgrade.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"self-upgrade.js","sourceRoot":"","sources":["../src/self-upgrade.ts"],"names":[],"mappings":"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"}
|