opensoma 0.5.1 → 0.6.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 +3 -2
- package/dist/src/cli.js.map +1 -1
- package/dist/src/client.d.ts +30 -7
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +218 -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 +2 -1
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +2 -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/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 +9 -0
- package/dist/src/credential-manager.d.ts.map +1 -1
- package/dist/src/credential-manager.js +24 -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 +4 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.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/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 +4 -2
- package/src/client.test.ts +673 -30
- package/src/client.ts +277 -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 +72 -25
- package/src/commands/helpers.ts +3 -3
- package/src/commands/index.ts +2 -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/constants.ts +20 -8
- package/src/credential-manager.test.ts +44 -0
- package/src/credential-manager.ts +27 -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 +10 -1
- 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/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.6.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":"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"}
|
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;AA2BnC,QAAA,MAAM,OAAO,SAAgB,CAAA;AA+B7B,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
package/dist/src/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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,
|
|
4
|
+
import { agentBrowserCommand, authCommand, dashboardCommand, memberCommand, mentoringCommand, noticeCommand, reportCommand, roomCommand, scheduleCommand, teamCommand, } from './commands/index.js';
|
|
5
5
|
function isAuthCommand(command) {
|
|
6
6
|
let current = command;
|
|
7
7
|
while (current) {
|
|
@@ -27,13 +27,14 @@ program.hook('preAction', async (_thisCommand, actionCommand) => {
|
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
program.addCommand(authCommand);
|
|
30
|
+
program.addCommand(agentBrowserCommand);
|
|
30
31
|
program.addCommand(mentoringCommand);
|
|
31
32
|
program.addCommand(roomCommand);
|
|
32
33
|
program.addCommand(dashboardCommand);
|
|
33
34
|
program.addCommand(noticeCommand);
|
|
34
35
|
program.addCommand(teamCommand);
|
|
35
36
|
program.addCommand(memberCommand);
|
|
36
|
-
program.addCommand(
|
|
37
|
+
program.addCommand(scheduleCommand);
|
|
37
38
|
program.addCommand(reportCommand);
|
|
38
39
|
program.parse(process.argv);
|
|
39
40
|
export { program };
|
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,GACZ,MAAM,kBAAkB,CAAA;AAEzB,SAAS,aAAa,CAAC,OAAgB;IACrC,IAAI,OAAO,GAAmB,OAAO,CAAA;IACrC,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAC9B,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,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,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;AAEjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
package/dist/src/client.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
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 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
6
|
export interface SomaClientOptions {
|
|
6
7
|
sessionCookie?: string;
|
|
7
8
|
csrfToken?: string;
|
|
@@ -15,6 +16,7 @@ export declare class SomaClient {
|
|
|
15
16
|
private readonly http;
|
|
16
17
|
private readonly options;
|
|
17
18
|
private loginCredentials;
|
|
19
|
+
private reloginInFlight;
|
|
18
20
|
readonly mentoring: {
|
|
19
21
|
list(options?: {
|
|
20
22
|
status?: string;
|
|
@@ -34,8 +36,11 @@ export declare class SomaClient {
|
|
|
34
36
|
endTime: string;
|
|
35
37
|
venue: string;
|
|
36
38
|
maxAttendees?: number;
|
|
39
|
+
receiptType?: 'UNTIL_LECTURE' | 'DIRECT';
|
|
37
40
|
regStart?: string;
|
|
41
|
+
regStartTime?: string;
|
|
38
42
|
regEnd?: string;
|
|
43
|
+
regEndTime?: string;
|
|
39
44
|
content?: string;
|
|
40
45
|
}): Promise<void>;
|
|
41
46
|
update(id: number, params: MentoringUpdateOptions): Promise<void>;
|
|
@@ -67,6 +72,18 @@ export declare class SomaClient {
|
|
|
67
72
|
attendees?: number;
|
|
68
73
|
notes?: string;
|
|
69
74
|
}): Promise<void>;
|
|
75
|
+
get(rentId: number): Promise<RoomReservationDetail>;
|
|
76
|
+
update(rentId: number, params?: RoomUpdateOptions): Promise<void>;
|
|
77
|
+
cancel(rentId: number): Promise<void>;
|
|
78
|
+
reservations(options?: {
|
|
79
|
+
status?: Exclude<RoomReservationStatus, 'unknown'> | 'all';
|
|
80
|
+
startDate?: string;
|
|
81
|
+
endDate?: string;
|
|
82
|
+
page?: number;
|
|
83
|
+
}): Promise<{
|
|
84
|
+
items: RoomReservationListItem[];
|
|
85
|
+
pagination: Pagination;
|
|
86
|
+
}>;
|
|
70
87
|
};
|
|
71
88
|
readonly dashboard: {
|
|
72
89
|
get(): Promise<Dashboard>;
|
|
@@ -105,20 +122,22 @@ export declare class SomaClient {
|
|
|
105
122
|
}>;
|
|
106
123
|
};
|
|
107
124
|
readonly team: {
|
|
108
|
-
|
|
125
|
+
list(options?: {
|
|
126
|
+
search?: TeamSearchQuery;
|
|
127
|
+
}): Promise<TeamInfo>;
|
|
128
|
+
join(teamId: string): Promise<void>;
|
|
129
|
+
leave(teamId: string): Promise<void>;
|
|
109
130
|
};
|
|
110
131
|
readonly member: {
|
|
111
132
|
show(): Promise<MemberInfo>;
|
|
112
133
|
};
|
|
113
|
-
readonly
|
|
134
|
+
readonly schedule: {
|
|
114
135
|
list(options?: {
|
|
115
136
|
page?: number;
|
|
116
137
|
}): Promise<{
|
|
117
|
-
items:
|
|
138
|
+
items: ScheduleListItem[];
|
|
118
139
|
pagination: Pagination;
|
|
119
140
|
}>;
|
|
120
|
-
get(id: number): Promise<unknown>;
|
|
121
|
-
apply(id: number): Promise<void>;
|
|
122
141
|
};
|
|
123
142
|
constructor(options?: SomaClientOptions);
|
|
124
143
|
getSessionData(): {
|
|
@@ -126,11 +145,15 @@ export declare class SomaClient {
|
|
|
126
145
|
csrfToken: string | null;
|
|
127
146
|
};
|
|
128
147
|
private requireAuth;
|
|
148
|
+
private relogin;
|
|
129
149
|
private resolveUser;
|
|
130
150
|
login(username?: string, password?: string): Promise<void>;
|
|
131
151
|
isLoggedIn(): Promise<boolean>;
|
|
152
|
+
whoami(): Promise<UserIdentity | null>;
|
|
132
153
|
logout(): Promise<void>;
|
|
133
154
|
saveCredentials(manager?: CredentialManager): Promise<void>;
|
|
155
|
+
private postTeamAction;
|
|
156
|
+
private postRoomUpdate;
|
|
134
157
|
private containsErrorIndicator;
|
|
135
158
|
private extractErrorMessage;
|
|
136
159
|
}
|
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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"}
|