opensoma 0.5.1 → 0.7.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/dist/package.json +5 -1
- package/dist/src/agent-browser-launcher.d.ts +43 -0
- package/dist/src/agent-browser-launcher.d.ts.map +1 -0
- package/dist/src/agent-browser-launcher.js +97 -0
- package/dist/src/agent-browser-launcher.js.map +1 -0
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +8 -5
- package/dist/src/cli.js.map +1 -1
- package/dist/src/client.d.ts +34 -7
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +224 -52
- package/dist/src/client.js.map +1 -1
- package/dist/src/commands/agent-browser.d.ts +3 -0
- package/dist/src/commands/agent-browser.d.ts.map +1 -0
- package/dist/src/commands/agent-browser.js +27 -0
- package/dist/src/commands/agent-browser.js.map +1 -0
- package/dist/src/commands/auth.d.ts +1 -1
- package/dist/src/commands/auth.d.ts.map +1 -1
- package/dist/src/commands/auth.js +4 -2
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/dashboard.d.ts +13 -0
- package/dist/src/commands/dashboard.d.ts.map +1 -1
- package/dist/src/commands/dashboard.js +10 -18
- package/dist/src/commands/dashboard.js.map +1 -1
- package/dist/src/commands/helpers.d.ts +1 -1
- package/dist/src/commands/helpers.d.ts.map +1 -1
- package/dist/src/commands/helpers.js +2 -2
- package/dist/src/commands/helpers.js.map +1 -1
- package/dist/src/commands/index.d.ts +3 -1
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +3 -1
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/mentoring.d.ts.map +1 -1
- package/dist/src/commands/mentoring.js +54 -29
- package/dist/src/commands/mentoring.js.map +1 -1
- package/dist/src/commands/notice.d.ts.map +1 -1
- package/dist/src/commands/notice.js +2 -1
- package/dist/src/commands/notice.js.map +1 -1
- package/dist/src/commands/report.d.ts.map +1 -1
- package/dist/src/commands/report.js +4 -2
- package/dist/src/commands/report.js.map +1 -1
- package/dist/src/commands/room.d.ts.map +1 -1
- package/dist/src/commands/room.js +125 -2
- package/dist/src/commands/room.js.map +1 -1
- package/dist/src/commands/schedule.d.ts +3 -0
- package/dist/src/commands/schedule.d.ts.map +1 -0
- package/dist/src/commands/schedule.js +27 -0
- package/dist/src/commands/schedule.js.map +1 -0
- package/dist/src/commands/team.d.ts.map +1 -1
- package/dist/src/commands/team.js +55 -4
- package/dist/src/commands/team.js.map +1 -1
- package/dist/src/commands/toz.d.ts +16 -0
- package/dist/src/commands/toz.d.ts.map +1 -0
- package/dist/src/commands/toz.js +488 -0
- package/dist/src/commands/toz.js.map +1 -0
- package/dist/src/constants.d.ts +5 -5
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +20 -8
- package/dist/src/constants.js.map +1 -1
- package/dist/src/credential-manager.d.ts +15 -0
- package/dist/src/credential-manager.d.ts.map +1 -1
- package/dist/src/credential-manager.js +46 -0
- package/dist/src/credential-manager.js.map +1 -1
- package/dist/src/formatters.d.ts +11 -3
- package/dist/src/formatters.d.ts.map +1 -1
- package/dist/src/formatters.js +281 -52
- package/dist/src/formatters.js.map +1 -1
- package/dist/src/http.d.ts +8 -0
- package/dist/src/http.d.ts.map +1 -1
- package/dist/src/http.js +29 -1
- package/dist/src/http.js.map +1 -1
- package/dist/src/index.d.ts +8 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/session-recovery.js +2 -0
- package/dist/src/session-recovery.js.map +1 -1
- package/dist/src/shared/utils/swmaestro.d.ts +34 -1
- package/dist/src/shared/utils/swmaestro.d.ts.map +1 -1
- package/dist/src/shared/utils/swmaestro.js +102 -39
- package/dist/src/shared/utils/swmaestro.js.map +1 -1
- package/dist/src/shared/utils/team-action-params.d.ts +3 -0
- package/dist/src/shared/utils/team-action-params.d.ts.map +1 -0
- package/dist/src/shared/utils/team-action-params.js +10 -0
- package/dist/src/shared/utils/team-action-params.js.map +1 -0
- package/dist/src/shared/utils/team-params.d.ts +12 -0
- package/dist/src/shared/utils/team-params.d.ts.map +1 -0
- package/dist/src/shared/utils/team-params.js +38 -0
- package/dist/src/shared/utils/team-params.js.map +1 -0
- package/dist/src/toz-client.d.ts +89 -0
- package/dist/src/toz-client.d.ts.map +1 -0
- package/dist/src/toz-client.js +204 -0
- package/dist/src/toz-client.js.map +1 -0
- package/dist/src/toz-pending-store.d.ts +30 -0
- package/dist/src/toz-pending-store.d.ts.map +1 -0
- package/dist/src/toz-pending-store.js +36 -0
- package/dist/src/toz-pending-store.js.map +1 -0
- package/dist/src/types.d.ts +147 -10
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +74 -6
- package/dist/src/types.js.map +1 -1
- package/package.json +5 -1
- package/src/agent-browser-launcher.test.ts +263 -0
- package/src/agent-browser-launcher.ts +159 -0
- package/src/cli.ts +10 -5
- package/src/client.test.ts +673 -30
- package/src/client.ts +287 -67
- package/src/commands/agent-browser.ts +33 -0
- package/src/commands/auth.test.ts +77 -26
- package/src/commands/auth.ts +5 -3
- package/src/commands/dashboard.test.ts +57 -0
- package/src/commands/dashboard.ts +22 -19
- package/src/commands/helpers.test.ts +76 -25
- package/src/commands/helpers.ts +3 -3
- package/src/commands/index.ts +3 -1
- package/src/commands/mentoring.ts +60 -29
- package/src/commands/notice.ts +2 -1
- package/src/commands/report.ts +4 -2
- package/src/commands/room.ts +160 -1
- package/src/commands/schedule.ts +32 -0
- package/src/commands/team.ts +73 -5
- package/src/commands/toz.test.ts +51 -0
- package/src/commands/toz.ts +607 -0
- package/src/constants.ts +20 -8
- package/src/credential-manager.test.ts +98 -0
- package/src/credential-manager.ts +50 -0
- package/src/formatters.test.ts +528 -33
- package/src/formatters.ts +309 -55
- package/src/http.test.ts +71 -2
- package/src/http.ts +41 -2
- package/src/index.ts +23 -1
- package/src/session-recovery.ts +2 -0
- package/src/shared/utils/swmaestro.test.ts +245 -9
- package/src/shared/utils/swmaestro.ts +150 -47
- package/src/shared/utils/team-action-params.test.ts +32 -0
- package/src/shared/utils/team-action-params.ts +10 -0
- package/src/shared/utils/team-params.test.ts +141 -0
- package/src/shared/utils/team-params.ts +53 -0
- package/src/toz-client.test.ts +243 -0
- package/src/toz-client.ts +311 -0
- package/src/toz-pending-store.test.ts +91 -0
- package/src/toz-pending-store.ts +62 -0
- package/src/types.test.ts +26 -13
- package/src/types.ts +87 -7
- package/dist/src/commands/event.d.ts +0 -3
- package/dist/src/commands/event.d.ts.map +0 -1
- package/dist/src/commands/event.js +0 -58
- package/dist/src/commands/event.js.map +0 -1
- package/src/commands/event.ts +0 -73
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opensoma",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "SWMaestro MyPage CLI & SDK for AI agents",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -41,6 +41,10 @@
|
|
|
41
41
|
"./shared/utils/mentoring-params": {
|
|
42
42
|
"types": "./src/shared/utils/mentoring-params.ts",
|
|
43
43
|
"default": "./src/shared/utils/mentoring-params.ts"
|
|
44
|
+
},
|
|
45
|
+
"./shared/utils/team-params": {
|
|
46
|
+
"types": "./src/shared/utils/team-params.ts",
|
|
47
|
+
"default": "./src/shared/utils/team-params.ts"
|
|
44
48
|
}
|
|
45
49
|
},
|
|
46
50
|
"scripts": {
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export interface AgentBrowserLaunchInput {
|
|
2
|
+
url: string;
|
|
3
|
+
sessionCookie: string;
|
|
4
|
+
}
|
|
5
|
+
export interface SpawnedProcess {
|
|
6
|
+
exited: Promise<number>;
|
|
7
|
+
}
|
|
8
|
+
export type Spawner = (command: string[]) => SpawnedProcess;
|
|
9
|
+
export interface AgentBrowserLauncherOptions {
|
|
10
|
+
spawn?: Spawner;
|
|
11
|
+
binary?: string;
|
|
12
|
+
tmpDir?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface LaunchResult {
|
|
15
|
+
exitCode: number;
|
|
16
|
+
statePath: string;
|
|
17
|
+
}
|
|
18
|
+
interface StorageStateCookie {
|
|
19
|
+
name: string;
|
|
20
|
+
value: string;
|
|
21
|
+
domain: string;
|
|
22
|
+
path: string;
|
|
23
|
+
expires: number;
|
|
24
|
+
httpOnly: boolean;
|
|
25
|
+
secure: boolean;
|
|
26
|
+
sameSite: 'Strict' | 'Lax' | 'None';
|
|
27
|
+
}
|
|
28
|
+
interface StorageState {
|
|
29
|
+
cookies: StorageStateCookie[];
|
|
30
|
+
origins: never[];
|
|
31
|
+
}
|
|
32
|
+
export declare function buildStorageState(sessionCookie: string): StorageState;
|
|
33
|
+
export declare function assertSwmaestroUrl(rawUrl: string): URL;
|
|
34
|
+
export declare class AgentBrowserLauncher {
|
|
35
|
+
private readonly spawn;
|
|
36
|
+
private readonly binary;
|
|
37
|
+
private readonly tmpRoot;
|
|
38
|
+
constructor(options?: AgentBrowserLauncherOptions);
|
|
39
|
+
launch(input: AgentBrowserLaunchInput): Promise<LaunchResult>;
|
|
40
|
+
private createStateDir;
|
|
41
|
+
}
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=agent-browser-launcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-browser-launcher.d.ts","sourceRoot":"","sources":["../../src/agent-browser-launcher.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;CACxB;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,cAAc,CAAA;AAE3D,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAKD,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAA;CACpC;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,kBAAkB,EAAE,CAAA;IAC7B,OAAO,EAAE,KAAK,EAAE,CAAA;CACjB;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,YAAY,CAsBrE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAmBtD;AAcD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEpB,OAAO,GAAE,2BAAgC;IAM/C,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;YAwBrD,cAAc;CAU7B"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { chmod, mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
const SWMAESTRO_HOST = 'www.swmaestro.ai';
|
|
6
|
+
const ALLOWED_HOSTS = new Set([SWMAESTRO_HOST, 'swmaestro.ai']);
|
|
7
|
+
export function buildStorageState(sessionCookie) {
|
|
8
|
+
// Java EE JSESSIONID is host-only on the exact host that issued it. Use
|
|
9
|
+
// www.swmaestro.ai (no leading dot) to match how the native server sets it.
|
|
10
|
+
// Using `.swmaestro.ai` here would either fail to import or produce a
|
|
11
|
+
// domain-cookie that the server treats as foreign.
|
|
12
|
+
return {
|
|
13
|
+
cookies: [
|
|
14
|
+
{
|
|
15
|
+
name: 'JSESSIONID',
|
|
16
|
+
value: sessionCookie,
|
|
17
|
+
domain: SWMAESTRO_HOST,
|
|
18
|
+
path: '/',
|
|
19
|
+
// -1 is the Playwright/agent-browser convention for session cookies
|
|
20
|
+
// (no Expires/Max-Age attribute). JSESSIONID is a session cookie.
|
|
21
|
+
expires: -1,
|
|
22
|
+
httpOnly: true,
|
|
23
|
+
secure: true,
|
|
24
|
+
sameSite: 'Lax',
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
origins: [],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function assertSwmaestroUrl(rawUrl) {
|
|
31
|
+
let parsed;
|
|
32
|
+
try {
|
|
33
|
+
parsed = new URL(rawUrl);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
throw new Error(`Invalid URL: ${rawUrl}`);
|
|
37
|
+
}
|
|
38
|
+
if (parsed.protocol !== 'https:') {
|
|
39
|
+
throw new Error(`URL must use https:// (got ${parsed.protocol}//): ${rawUrl}`);
|
|
40
|
+
}
|
|
41
|
+
if (!ALLOWED_HOSTS.has(parsed.hostname)) {
|
|
42
|
+
throw new Error(`URL must point to swmaestro.ai (got ${parsed.hostname}). Cookie injection only works for swmaestro.ai targets.`);
|
|
43
|
+
}
|
|
44
|
+
return parsed;
|
|
45
|
+
}
|
|
46
|
+
function defaultSpawn(command) {
|
|
47
|
+
// Bun.spawn with array args avoids shell interpretation entirely. The
|
|
48
|
+
// randomized state-file path appears in argv but the JSESSIONID value
|
|
49
|
+
// never does — that's the security guarantee.
|
|
50
|
+
const proc = Bun.spawn(command, {
|
|
51
|
+
stdout: 'inherit',
|
|
52
|
+
stderr: 'inherit',
|
|
53
|
+
stdin: 'inherit',
|
|
54
|
+
});
|
|
55
|
+
return { exited: proc.exited };
|
|
56
|
+
}
|
|
57
|
+
export class AgentBrowserLauncher {
|
|
58
|
+
spawn;
|
|
59
|
+
binary;
|
|
60
|
+
tmpRoot;
|
|
61
|
+
constructor(options = {}) {
|
|
62
|
+
this.spawn = options.spawn ?? defaultSpawn;
|
|
63
|
+
this.binary = options.binary ?? 'agent-browser';
|
|
64
|
+
this.tmpRoot = options.tmpDir ?? tmpdir();
|
|
65
|
+
}
|
|
66
|
+
async launch(input) {
|
|
67
|
+
const target = assertSwmaestroUrl(input.url);
|
|
68
|
+
const state = buildStorageState(input.sessionCookie);
|
|
69
|
+
// agent-browser ignores --state if a daemon is already running. Close
|
|
70
|
+
// first so our cookie injection actually takes effect. We don't care
|
|
71
|
+
// about the close exit code (no-op if no daemon was running).
|
|
72
|
+
await this.spawn([this.binary, 'close', '--all']).exited;
|
|
73
|
+
const stateDir = await this.createStateDir();
|
|
74
|
+
const statePath = join(stateDir, 'state.json');
|
|
75
|
+
try {
|
|
76
|
+
await writeFile(statePath, JSON.stringify(state), { mode: 0o600 });
|
|
77
|
+
await chmod(statePath, 0o600);
|
|
78
|
+
const proc = this.spawn([this.binary, '--state', statePath, 'open', target.toString()]);
|
|
79
|
+
const exitCode = await proc.exited;
|
|
80
|
+
return { exitCode, statePath };
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
await rm(stateDir, { recursive: true, force: true });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async createStateDir() {
|
|
87
|
+
// Random suffix on the directory name so concurrent launches don't
|
|
88
|
+
// collide and so the path is hard to predict for same-UID local
|
|
89
|
+
// attackers. mkdtemp creates with 0700 by default on macOS/Linux but we
|
|
90
|
+
// chmod to be explicit across platforms.
|
|
91
|
+
const prefix = `opensoma-agent-browser-${randomBytes(8).toString('hex')}-`;
|
|
92
|
+
const dir = await mkdtemp(join(this.tmpRoot, prefix));
|
|
93
|
+
await chmod(dir, 0o700);
|
|
94
|
+
return dir;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=agent-browser-launcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-browser-launcher.js","sourceRoot":"","sources":["../../src/agent-browser-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAkChC,MAAM,cAAc,GAAG,kBAAkB,CAAA;AACzC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAA;AAkB/D,MAAM,UAAU,iBAAiB,CAAC,aAAqB;IACrD,wEAAwE;IACxE,4EAA4E;IAC5E,sEAAsE;IACtE,mDAAmD;IACnD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,aAAa;gBACpB,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,GAAG;gBACT,oEAAoE;gBACpE,kEAAkE;gBAClE,OAAO,EAAE,CAAC,CAAC;gBACX,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,OAAO,EAAE,EAAE;KACZ,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,IAAI,MAAW,CAAA;IACf,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,QAAQ,QAAQ,MAAM,EAAE,CAAC,CAAA;IAChF,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,uCAAuC,MAAM,CAAC,QAAQ,0DAA0D,CACjH,CAAA;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CAAC,OAAiB;IACrC,sEAAsE;IACtE,sEAAsE;IACtE,8CAA8C;IAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;QAC9B,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,SAAS;KACjB,CAAC,CAAA;IACF,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;AAChC,CAAC;AAED,MAAM,OAAO,oBAAoB;IACd,KAAK,CAAS;IACd,MAAM,CAAQ;IACd,OAAO,CAAQ;IAEhC,YAAY,UAAuC,EAAE;QACnD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAA;QAC1C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,eAAe,CAAA;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAA8B;QACzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAEpD,sEAAsE;QACtE,qEAAqE;QACrE,8DAA8D;QAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;QAExD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QAE9C,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YAClE,MAAM,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;YACvF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAA;YAClC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;QAChC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,mEAAmE;QACnE,gEAAgE;QAChE,wEAAwE;QACxE,yCAAyC;QACzC,MAAM,MAAM,GAAG,0BAA0B,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAA;QAC1E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;QACrD,MAAM,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACvB,OAAO,GAAG,CAAA;IACZ,CAAC;CACF"}
|
package/dist/src/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6BnC,QAAA,MAAM,OAAO,SAAgB,CAAA;AAgC7B,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
package/dist/src/cli.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import pkg from '../package.json' with { type: 'json' };
|
|
4
|
-
import { authCommand, dashboardCommand,
|
|
5
|
-
function
|
|
4
|
+
import { agentBrowserCommand, authCommand, dashboardCommand, memberCommand, mentoringCommand, noticeCommand, reportCommand, roomCommand, scheduleCommand, teamCommand, tozCommand, } from './commands/index.js';
|
|
5
|
+
function isUnauthenticatedCommand(command) {
|
|
6
6
|
let current = command;
|
|
7
7
|
while (current) {
|
|
8
|
-
|
|
8
|
+
const name = current.name();
|
|
9
|
+
if (name === 'auth' || name === 'toz') {
|
|
9
10
|
return true;
|
|
10
11
|
}
|
|
11
12
|
current = current.parent;
|
|
@@ -15,7 +16,7 @@ function isAuthCommand(command) {
|
|
|
15
16
|
const program = new Command();
|
|
16
17
|
program.name('opensoma').description('SWMaestro MyPage CLI for AI agents').version(pkg.version);
|
|
17
18
|
program.hook('preAction', async (_thisCommand, actionCommand) => {
|
|
18
|
-
if (
|
|
19
|
+
if (isUnauthenticatedCommand(actionCommand)) {
|
|
19
20
|
return;
|
|
20
21
|
}
|
|
21
22
|
const { CredentialManager } = await import('./credential-manager.js');
|
|
@@ -27,14 +28,16 @@ program.hook('preAction', async (_thisCommand, actionCommand) => {
|
|
|
27
28
|
}
|
|
28
29
|
});
|
|
29
30
|
program.addCommand(authCommand);
|
|
31
|
+
program.addCommand(agentBrowserCommand);
|
|
30
32
|
program.addCommand(mentoringCommand);
|
|
31
33
|
program.addCommand(roomCommand);
|
|
32
34
|
program.addCommand(dashboardCommand);
|
|
33
35
|
program.addCommand(noticeCommand);
|
|
34
36
|
program.addCommand(teamCommand);
|
|
35
37
|
program.addCommand(memberCommand);
|
|
36
|
-
program.addCommand(
|
|
38
|
+
program.addCommand(scheduleCommand);
|
|
37
39
|
program.addCommand(reportCommand);
|
|
40
|
+
program.addCommand(tozCommand);
|
|
38
41
|
program.parse(process.argv);
|
|
39
42
|
export { program };
|
|
40
43
|
//# sourceMappingURL=cli.js.map
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACvD,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACvD,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,EACf,WAAW,EACX,UAAU,GACX,MAAM,kBAAkB,CAAA;AAEzB,SAAS,wBAAwB,CAAC,OAAgB;IAChD,IAAI,OAAO,GAAmB,OAAO,CAAA;IACrC,OAAO,OAAO,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACtC,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAA;IAC1B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,oCAAoC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAE/F,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE;IAC9D,IAAI,wBAAwB,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5C,OAAM;IACR,CAAC;IAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;IAClE,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAA;IACvC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAA;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAC,CAAA;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAA;AACvC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACpC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAE9B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
package/dist/src/client.d.ts
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { CredentialManager } from './credential-manager.js';
|
|
2
|
-
import { SomaHttp } from './http.js';
|
|
2
|
+
import { SomaHttp, type UserIdentity } from './http.js';
|
|
3
3
|
import { type MentoringSearchQuery } from './shared/utils/mentoring-params.js';
|
|
4
|
-
import
|
|
4
|
+
import { type TeamSearchQuery } from './shared/utils/team-params.js';
|
|
5
|
+
import { TozClient } from './toz-client.js';
|
|
6
|
+
import type { ApplicationHistoryItem, ApprovalListItem, Dashboard, MemberInfo, MentoringDetail, MentoringListItem, MentoringUpdateOptions, NoticeDetail, NoticeListItem, Pagination, ReportCreateOptions, ReportDetail, ReportListItem, ReportUpdateOptions, RoomCard, RoomReservationDetail, RoomReservationListItem, RoomReservationStatus, RoomUpdateOptions, ScheduleListItem, TeamInfo } from './types.js';
|
|
5
7
|
export interface SomaClientOptions {
|
|
6
8
|
sessionCookie?: string;
|
|
7
9
|
csrfToken?: string;
|
|
8
10
|
username?: string;
|
|
9
11
|
password?: string;
|
|
10
12
|
verbose?: boolean;
|
|
13
|
+
tozName?: string;
|
|
14
|
+
tozPhone?: string;
|
|
11
15
|
/** @internal */
|
|
12
16
|
http?: SomaHttp;
|
|
13
17
|
}
|
|
@@ -15,6 +19,7 @@ export declare class SomaClient {
|
|
|
15
19
|
private readonly http;
|
|
16
20
|
private readonly options;
|
|
17
21
|
private loginCredentials;
|
|
22
|
+
private reloginInFlight;
|
|
18
23
|
readonly mentoring: {
|
|
19
24
|
list(options?: {
|
|
20
25
|
status?: string;
|
|
@@ -34,8 +39,11 @@ export declare class SomaClient {
|
|
|
34
39
|
endTime: string;
|
|
35
40
|
venue: string;
|
|
36
41
|
maxAttendees?: number;
|
|
42
|
+
receiptType?: 'UNTIL_LECTURE' | 'DIRECT';
|
|
37
43
|
regStart?: string;
|
|
44
|
+
regStartTime?: string;
|
|
38
45
|
regEnd?: string;
|
|
46
|
+
regEndTime?: string;
|
|
39
47
|
content?: string;
|
|
40
48
|
}): Promise<void>;
|
|
41
49
|
update(id: number, params: MentoringUpdateOptions): Promise<void>;
|
|
@@ -67,6 +75,18 @@ export declare class SomaClient {
|
|
|
67
75
|
attendees?: number;
|
|
68
76
|
notes?: string;
|
|
69
77
|
}): Promise<void>;
|
|
78
|
+
get(rentId: number): Promise<RoomReservationDetail>;
|
|
79
|
+
update(rentId: number, params?: RoomUpdateOptions): Promise<void>;
|
|
80
|
+
cancel(rentId: number): Promise<void>;
|
|
81
|
+
reservations(options?: {
|
|
82
|
+
status?: Exclude<RoomReservationStatus, 'unknown'> | 'all';
|
|
83
|
+
startDate?: string;
|
|
84
|
+
endDate?: string;
|
|
85
|
+
page?: number;
|
|
86
|
+
}): Promise<{
|
|
87
|
+
items: RoomReservationListItem[];
|
|
88
|
+
pagination: Pagination;
|
|
89
|
+
}>;
|
|
70
90
|
};
|
|
71
91
|
readonly dashboard: {
|
|
72
92
|
get(): Promise<Dashboard>;
|
|
@@ -105,32 +125,39 @@ export declare class SomaClient {
|
|
|
105
125
|
}>;
|
|
106
126
|
};
|
|
107
127
|
readonly team: {
|
|
108
|
-
|
|
128
|
+
list(options?: {
|
|
129
|
+
search?: TeamSearchQuery;
|
|
130
|
+
}): Promise<TeamInfo>;
|
|
131
|
+
join(teamId: string): Promise<void>;
|
|
132
|
+
leave(teamId: string): Promise<void>;
|
|
109
133
|
};
|
|
110
134
|
readonly member: {
|
|
111
135
|
show(): Promise<MemberInfo>;
|
|
112
136
|
};
|
|
113
|
-
readonly
|
|
137
|
+
readonly schedule: {
|
|
114
138
|
list(options?: {
|
|
115
139
|
page?: number;
|
|
116
140
|
}): Promise<{
|
|
117
|
-
items:
|
|
141
|
+
items: ScheduleListItem[];
|
|
118
142
|
pagination: Pagination;
|
|
119
143
|
}>;
|
|
120
|
-
get(id: number): Promise<unknown>;
|
|
121
|
-
apply(id: number): Promise<void>;
|
|
122
144
|
};
|
|
145
|
+
readonly toz: TozClient;
|
|
123
146
|
constructor(options?: SomaClientOptions);
|
|
124
147
|
getSessionData(): {
|
|
125
148
|
sessionCookie: string | undefined;
|
|
126
149
|
csrfToken: string | null;
|
|
127
150
|
};
|
|
128
151
|
private requireAuth;
|
|
152
|
+
private relogin;
|
|
129
153
|
private resolveUser;
|
|
130
154
|
login(username?: string, password?: string): Promise<void>;
|
|
131
155
|
isLoggedIn(): Promise<boolean>;
|
|
156
|
+
whoami(): Promise<UserIdentity | null>;
|
|
132
157
|
logout(): Promise<void>;
|
|
133
158
|
saveCredentials(manager?: CredentialManager): Promise<void>;
|
|
159
|
+
private postTeamAction;
|
|
160
|
+
private postRoomUpdate;
|
|
134
161
|
private containsErrorIndicator;
|
|
135
162
|
private extractErrorMessage;
|
|
136
163
|
}
|
package/dist/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAGxD,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|