opensoma 0.2.0 → 0.3.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.
Files changed (87) hide show
  1. package/dist/package.json +2 -2
  2. package/dist/src/cli.d.ts.map +1 -1
  3. package/dist/src/cli.js +2 -1
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/client.d.ts +26 -1
  6. package/dist/src/client.d.ts.map +1 -1
  7. package/dist/src/client.js +141 -3
  8. package/dist/src/client.js.map +1 -1
  9. package/dist/src/commands/auth.d.ts +12 -0
  10. package/dist/src/commands/auth.d.ts.map +1 -1
  11. package/dist/src/commands/auth.js +151 -23
  12. package/dist/src/commands/auth.js.map +1 -1
  13. package/dist/src/commands/helpers.d.ts +12 -0
  14. package/dist/src/commands/helpers.d.ts.map +1 -1
  15. package/dist/src/commands/helpers.js +55 -9
  16. package/dist/src/commands/helpers.js.map +1 -1
  17. package/dist/src/commands/index.d.ts +1 -0
  18. package/dist/src/commands/index.d.ts.map +1 -1
  19. package/dist/src/commands/index.js +1 -0
  20. package/dist/src/commands/index.js.map +1 -1
  21. package/dist/src/commands/mentoring.d.ts.map +1 -1
  22. package/dist/src/commands/mentoring.js +37 -1
  23. package/dist/src/commands/mentoring.js.map +1 -1
  24. package/dist/src/commands/report.d.ts +27 -0
  25. package/dist/src/commands/report.d.ts.map +1 -0
  26. package/dist/src/commands/report.js +224 -0
  27. package/dist/src/commands/report.js.map +1 -0
  28. package/dist/src/constants.d.ts +2 -0
  29. package/dist/src/constants.d.ts.map +1 -1
  30. package/dist/src/constants.js +2 -0
  31. package/dist/src/constants.js.map +1 -1
  32. package/dist/src/credential-manager.d.ts +7 -0
  33. package/dist/src/credential-manager.d.ts.map +1 -1
  34. package/dist/src/credential-manager.js +76 -2
  35. package/dist/src/credential-manager.js.map +1 -1
  36. package/dist/src/formatters.d.ts +4 -1
  37. package/dist/src/formatters.d.ts.map +1 -1
  38. package/dist/src/formatters.js +91 -1
  39. package/dist/src/formatters.js.map +1 -1
  40. package/dist/src/http.d.ts +3 -0
  41. package/dist/src/http.d.ts.map +1 -1
  42. package/dist/src/http.js +109 -4
  43. package/dist/src/http.js.map +1 -1
  44. package/dist/src/session-recovery.d.ts +12 -0
  45. package/dist/src/session-recovery.d.ts.map +1 -0
  46. package/dist/src/session-recovery.js +34 -0
  47. package/dist/src/session-recovery.js.map +1 -0
  48. package/dist/src/shared/utils/report-params.d.ts +11 -0
  49. package/dist/src/shared/utils/report-params.d.ts.map +1 -0
  50. package/dist/src/shared/utils/report-params.js +27 -0
  51. package/dist/src/shared/utils/report-params.js.map +1 -0
  52. package/dist/src/shared/utils/swmaestro.d.ts +24 -0
  53. package/dist/src/shared/utils/swmaestro.d.ts.map +1 -1
  54. package/dist/src/shared/utils/swmaestro.js +50 -2
  55. package/dist/src/shared/utils/swmaestro.js.map +1 -1
  56. package/dist/src/token-extractor.d.ts.map +1 -1
  57. package/dist/src/token-extractor.js +38 -8
  58. package/dist/src/token-extractor.js.map +1 -1
  59. package/dist/src/types.d.ts +121 -0
  60. package/dist/src/types.d.ts.map +1 -1
  61. package/dist/src/types.js +72 -0
  62. package/dist/src/types.js.map +1 -1
  63. package/package.json +2 -2
  64. package/src/cli.ts +2 -0
  65. package/src/client.test.ts +95 -6
  66. package/src/client.ts +172 -4
  67. package/src/commands/auth.test.ts +152 -1
  68. package/src/commands/auth.ts +174 -28
  69. package/src/commands/helpers.test.ts +216 -0
  70. package/src/commands/helpers.ts +77 -12
  71. package/src/commands/index.ts +1 -0
  72. package/src/commands/mentoring.ts +55 -0
  73. package/src/commands/report.test.ts +49 -0
  74. package/src/commands/report.ts +322 -0
  75. package/src/constants.ts +2 -0
  76. package/src/credential-manager.test.ts +41 -1
  77. package/src/credential-manager.ts +103 -2
  78. package/src/formatters.test.ts +287 -0
  79. package/src/formatters.ts +105 -0
  80. package/src/http.test.ts +190 -4
  81. package/src/http.ts +132 -4
  82. package/src/session-recovery.ts +56 -0
  83. package/src/shared/utils/report-params.ts +41 -0
  84. package/src/shared/utils/swmaestro.ts +77 -5
  85. package/src/token-extractor.ts +59 -20
  86. package/src/types.test.ts +97 -0
  87. package/src/types.ts +84 -0
package/dist/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "opensoma",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "SWMaestro MyPage CLI & SDK for AI agents",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "git+https://github.com/devxoul/opensoma.git"
8
+ "url": "git+https://github.com/opensoma/opensoma.git"
9
9
  },
10
10
  "bin": {
11
11
  "opensoma": "dist/src/cli.js"
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAyBnC,QAAA,MAAM,OAAO,SAAgB,CAAA;AA6B7B,OAAO,EAAE,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA0BnC,QAAA,MAAM,OAAO,SAAgB,CAAA;AA8B7B,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, eventCommand, memberCommand, mentoringCommand, noticeCommand, roomCommand, teamCommand, } from './commands/index.js';
4
+ import { authCommand, dashboardCommand, eventCommand, memberCommand, mentoringCommand, noticeCommand, reportCommand, roomCommand, teamCommand, } from './commands/index.js';
5
5
  function isAuthCommand(command) {
6
6
  let current = command;
7
7
  while (current) {
@@ -34,6 +34,7 @@ program.addCommand(noticeCommand);
34
34
  program.addCommand(teamCommand);
35
35
  program.addCommand(memberCommand);
36
36
  program.addCommand(eventCommand);
37
+ program.addCommand(reportCommand);
37
38
  program.parse(process.argv);
38
39
  export { program };
39
40
  //# sourceMappingURL=cli.js.map
@@ -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,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,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,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,YAAY,CAAC,CAAA;AAEhC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,CAAA"}
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,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,WAAW,EACX,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,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,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AAEjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { CredentialManager } from './credential-manager.js';
2
2
  import { type MentoringSearchQuery } from './shared/utils/mentoring-params.js';
3
- import type { ApplicationHistoryItem, Dashboard, EventListItem, MemberInfo, MentoringDetail, MentoringListItem, NoticeDetail, NoticeListItem, Pagination, RoomCard, TeamInfo } from './types.js';
3
+ import { buildMentoringPayload } from './shared/utils/swmaestro.js';
4
+ import type { ApplicationHistoryItem, ApprovalListItem, Dashboard, EventListItem, MemberInfo, MentoringDetail, MentoringListItem, NoticeDetail, NoticeListItem, Pagination, ReportCreateOptions, ReportDetail, ReportListItem, ReportUpdateOptions, RoomCard, TeamInfo } from './types.js';
4
5
  export interface SomaClientOptions {
5
6
  sessionCookie?: string;
6
7
  csrfToken?: string;
@@ -11,6 +12,7 @@ export interface SomaClientOptions {
11
12
  export declare class SomaClient {
12
13
  private readonly http;
13
14
  private readonly options;
15
+ private loginCredentials;
14
16
  readonly mentoring: {
15
17
  list(options?: {
16
18
  status?: string;
@@ -34,6 +36,7 @@ export declare class SomaClient {
34
36
  regEnd?: string;
35
37
  content?: string;
36
38
  }): Promise<void>;
39
+ update(id: number, params: Parameters<typeof buildMentoringPayload>[0]): Promise<void>;
37
40
  delete(id: number): Promise<void>;
38
41
  apply(id: number): Promise<void>;
39
42
  cancel(params: {
@@ -74,6 +77,27 @@ export declare class SomaClient {
74
77
  }>;
75
78
  get(id: number): Promise<NoticeDetail>;
76
79
  };
80
+ readonly report: {
81
+ list(options?: {
82
+ page?: number;
83
+ searchField?: string;
84
+ searchKeyword?: string;
85
+ }): Promise<{
86
+ items: ReportListItem[];
87
+ pagination: Pagination;
88
+ }>;
89
+ get(id: number): Promise<ReportDetail>;
90
+ create(options: ReportCreateOptions, file: Buffer | string, fileName?: string): Promise<void>;
91
+ update(id: number, options: Omit<ReportUpdateOptions, 'id'>, file?: Buffer | string, fileName?: string): Promise<void>;
92
+ approval(options?: {
93
+ page?: number;
94
+ month?: string;
95
+ reportType?: string;
96
+ }): Promise<{
97
+ items: ApprovalListItem[];
98
+ pagination: Pagination;
99
+ }>;
100
+ };
77
101
  readonly team: {
78
102
  show(): Promise<TeamInfo>;
79
103
  };
@@ -99,6 +123,7 @@ export declare class SomaClient {
99
123
  private resolveUser;
100
124
  login(username?: string, password?: string): Promise<void>;
101
125
  isLoggedIn(): Promise<boolean>;
126
+ logout(): Promise<void>;
102
127
  saveCredentials(manager?: CredentialManager): Promise<void>;
103
128
  private containsErrorIndicator;
104
129
  private extractErrorMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAIxD,OAAO,EAA4B,KAAK,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACrG,OAAO,EAIL,qBAAqB,EAQtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,QAAQ,EACT,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAA+C;IAEvE,QAAQ,CAAC,SAAS,EAAE;QAClB,IAAI,CAAC,OAAO,CAAC,EAAE;YACb,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,IAAI,CAAC,EAAE,MAAM,CAAA;YACb,MAAM,CAAC,EAAE,oBAAoB,CAAA;YAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;SACd,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;YAAC,UAAU,EAAE,UAAU,CAAA;SAAE,CAAC,CAAA;QACnE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;QACzC,MAAM,CAAC,MAAM,EAAE;YACb,KAAK,EAAE,MAAM,CAAA;YACb,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;YAC1B,IAAI,EAAE,MAAM,CAAA;YACZ,SAAS,EAAE,MAAM,CAAA;YACjB,OAAO,EAAE,MAAM,CAAA;YACf,KAAK,EAAE,MAAM,CAAA;YACb,YAAY,CAAC,EAAE,MAAM,CAAA;YACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;YACjB,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,OAAO,CAAC,EAAE,MAAM,CAAA;SACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACjB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACtF,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACjC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACpE,OAAO,CAAC,OAAO,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;YAAC,UAAU,EAAE,UAAU,CAAA;SAAE,CAAC,CAAA;KAC3G,CAAA;IAED,QAAQ,CAAC,IAAI,EAAE;QACb,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QACrE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;QACvE,OAAO,CAAC,MAAM,EAAE;YACd,MAAM,EAAE,MAAM,CAAA;YACd,IAAI,EAAE,MAAM,CAAA;YACZ,KAAK,EAAE,MAAM,EAAE,CAAA;YACf,KAAK,EAAE,MAAM,CAAA;YACb,SAAS,CAAC,EAAE,MAAM,CAAA;YAClB,KAAK,CAAC,EAAE,MAAM,CAAA;SACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAClB,CAAA;IAED,QAAQ,CAAC,SAAS,EAAE;QAClB,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAA;KAC1B,CAAA;IAED,QAAQ,CAAC,MAAM,EAAE;QACf,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YAAC,UAAU,EAAE,UAAU,CAAA;SAAE,CAAC,CAAA;QAC/F,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;KACvC,CAAA;IAED,QAAQ,CAAC,MAAM,EAAE;QACf,IAAI,CAAC,OAAO,CAAC,EAAE;YACb,IAAI,CAAC,EAAE,MAAM,CAAA;YACb,WAAW,CAAC,EAAE,MAAM,CAAA;YACpB,aAAa,CAAC,EAAE,MAAM,CAAA;SACvB,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YAAC,UAAU,EAAE,UAAU,CAAA;SAAE,CAAC,CAAA;QAChE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;QACtC,MAAM,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAC7F,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAAA;QAChB,QAAQ,CAAC,OAAO,CAAC,EAAE;YACjB,IAAI,CAAC,EAAE,MAAM,CAAA;YACb,KAAK,CAAC,EAAE,MAAM,CAAA;YACd,UAAU,CAAC,EAAE,MAAM,CAAA;SACpB,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;YAAC,UAAU,EAAE,UAAU,CAAA;SAAE,CAAC,CAAA;KACnE,CAAA;IAED,QAAQ,CAAC,IAAI,EAAE;QACb,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAA;KAC1B,CAAA;IAED,QAAQ,CAAC,MAAM,EAAE;QACf,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,CAAA;KAC5B,CAAA;IAED,QAAQ,CAAC,KAAK,EAAE;QACd,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,aAAa,EAAE,CAAC;YAAC,UAAU,EAAE,UAAU,CAAA;SAAE,CAAC,CAAA;QAC9F,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QACjC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KACjC,CAAA;gBAEW,OAAO,GAAE,iBAAsB;IAgT3C,cAAc,IAAI;QAAE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;YAOnE,WAAW;YAYX,WAAW;IAKnB,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1D,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,eAAe,CAAC,OAAO,oBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBvE,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,mBAAmB;CAW5B"}
@@ -1,22 +1,27 @@
1
+ import { readFile } from 'node:fs/promises';
1
2
  import { MENU_NO } from './constants.js';
2
3
  import { CredentialManager } from './credential-manager.js';
3
4
  import { AuthenticationError } from './errors.js';
4
5
  import * as formatters from './formatters.js';
5
6
  import { SomaHttp } from './http.js';
6
7
  import { buildMentoringListParams } from './shared/utils/mentoring-params.js';
7
- import { buildApplicationPayload, buildCancelApplicationPayload, buildDeleteMentoringPayload, buildMentoringPayload, buildRoomReservationPayload, parseEventDetail, resolveRoomId, } from './shared/utils/swmaestro.js';
8
+ import { buildApplicationPayload, buildCancelApplicationPayload, buildDeleteMentoringPayload, buildMentoringPayload, buildReportPayload, buildRoomReservationPayload, buildUpdateMentoringPayload, parseEventDetail, resolveRoomId, toRegionCode, toReportTypeCd, } from './shared/utils/swmaestro.js';
8
9
  export class SomaClient {
9
10
  http;
10
11
  options;
12
+ loginCredentials;
11
13
  mentoring;
12
14
  room;
13
15
  dashboard;
14
16
  notice;
17
+ report;
15
18
  team;
16
19
  member;
17
20
  event;
18
21
  constructor(options = {}) {
19
22
  this.options = options;
23
+ this.loginCredentials =
24
+ options.username && options.password ? { username: options.username, password: options.password } : null;
20
25
  this.http = new SomaHttp({
21
26
  sessionCookie: options.sessionCookie,
22
27
  csrfToken: options.csrfToken,
@@ -52,6 +57,13 @@ export class SomaClient {
52
57
  throw new Error(this.extractErrorMessage(html) || '멘토링 등록에 실패했습니다.');
53
58
  }
54
59
  },
60
+ update: async (id, params) => {
61
+ await this.requireAuth();
62
+ const html = await this.http.post('/mypage/mentoLec/update.do', buildUpdateMentoringPayload(id, params));
63
+ if (this.containsErrorIndicator(html)) {
64
+ throw new Error(this.extractErrorMessage(html) || '멘토링 수정에 실패했습니다.');
65
+ }
66
+ },
55
67
  delete: async (id) => {
56
68
  await this.requireAuth();
57
69
  await this.http.post('/mypage/mentoLec/delete.do', buildDeleteMentoringPayload(id));
@@ -137,6 +149,120 @@ export class SomaClient {
137
149
  }), id);
138
150
  },
139
151
  };
152
+ this.report = {
153
+ list: async (options) => {
154
+ await this.requireAuth();
155
+ const params = {
156
+ menuNo: MENU_NO.REPORT,
157
+ pageIndex: String(options?.page ?? 1),
158
+ };
159
+ if (options?.searchField !== undefined)
160
+ params.searchCnd = options.searchField;
161
+ if (options?.searchKeyword)
162
+ params.searchWrd = options.searchKeyword;
163
+ const html = await this.http.get('/mypage/mentoringReport/list.do', params);
164
+ return {
165
+ items: formatters.parseReportList(html),
166
+ pagination: formatters.parsePagination(html),
167
+ };
168
+ },
169
+ get: async (id) => {
170
+ await this.requireAuth();
171
+ const html = await this.http.get('/mypage/mentoringReport/view.do', {
172
+ menuNo: MENU_NO.REPORT,
173
+ reportId: String(id),
174
+ });
175
+ return formatters.parseReportDetail(html, id);
176
+ },
177
+ create: async (options, file, fileName) => {
178
+ await this.requireAuth();
179
+ const payload = buildReportPayload({
180
+ menteeRegion: options.menteeRegion,
181
+ reportType: options.reportType,
182
+ progressDate: options.progressDate,
183
+ teamNames: options.teamNames,
184
+ venue: options.venue,
185
+ attendanceCount: options.attendanceCount,
186
+ attendanceNames: options.attendanceNames,
187
+ progressStartTime: options.progressStartTime,
188
+ progressEndTime: options.progressEndTime,
189
+ exceptStartTime: options.exceptStartTime,
190
+ exceptEndTime: options.exceptEndTime,
191
+ exceptReason: options.exceptReason,
192
+ subject: options.subject,
193
+ content: options.content,
194
+ mentorOpinion: options.mentorOpinion,
195
+ nonAttendanceNames: options.nonAttendanceNames,
196
+ etc: options.etc,
197
+ });
198
+ const formData = new FormData();
199
+ for (const [key, value] of Object.entries(payload)) {
200
+ formData.append(key, value);
201
+ }
202
+ const isBuffer = Buffer.isBuffer(file);
203
+ const fileBuffer = isBuffer ? file : await readFile(file);
204
+ const resolvedFileName = isBuffer ? (fileName ?? 'file') : (file.split('/').pop() ?? 'file');
205
+ const uint8Array = new Uint8Array(fileBuffer.buffer, fileBuffer.byteOffset, fileBuffer.byteLength);
206
+ formData.append('file_1_1', new Blob([uint8Array]), resolvedFileName);
207
+ formData.append('fileFieldNm_1', 'file_1');
208
+ formData.append('atchFileId', '');
209
+ await this.http.postMultipart('/mypage/mentoringReport/insert.do', formData);
210
+ },
211
+ update: async (id, options, file, fileName) => {
212
+ await this.requireAuth();
213
+ const existing = await this.report.get(id);
214
+ const payload = buildReportPayload({
215
+ menteeRegion: options.menteeRegion ?? toRegionCode(existing.menteeRegion),
216
+ reportType: options.reportType ?? toReportTypeCd(existing.reportType),
217
+ progressDate: options.progressDate ?? existing.progressDate,
218
+ teamNames: options.teamNames ?? existing.teamNames,
219
+ venue: options.venue ?? existing.venue,
220
+ attendanceCount: options.attendanceCount ?? existing.attendanceCount,
221
+ attendanceNames: options.attendanceNames ?? existing.attendanceNames,
222
+ progressStartTime: options.progressStartTime ?? existing.progressStartTime,
223
+ progressEndTime: options.progressEndTime ?? existing.progressEndTime,
224
+ exceptStartTime: options.exceptStartTime ?? existing.exceptStartTime,
225
+ exceptEndTime: options.exceptEndTime ?? existing.exceptEndTime,
226
+ exceptReason: options.exceptReason ?? existing.exceptReason,
227
+ subject: options.subject ?? existing.subject,
228
+ content: options.content ?? existing.content,
229
+ mentorOpinion: options.mentorOpinion ?? existing.mentorOpinion,
230
+ nonAttendanceNames: options.nonAttendanceNames ?? existing.nonAttendanceNames,
231
+ etc: options.etc ?? existing.etc,
232
+ reportId: id,
233
+ });
234
+ const formData = new FormData();
235
+ for (const [key, value] of Object.entries(payload)) {
236
+ formData.append(key, value);
237
+ }
238
+ if (file) {
239
+ const isBuffer = Buffer.isBuffer(file);
240
+ const fileBuffer = isBuffer ? file : await readFile(file);
241
+ const resolvedFileName = isBuffer ? (fileName ?? 'file') : (file.split('/').pop() ?? 'file');
242
+ const uint8Array = new Uint8Array(fileBuffer.buffer, fileBuffer.byteOffset, fileBuffer.byteLength);
243
+ formData.append('file_1_1', new Blob([uint8Array]), resolvedFileName);
244
+ formData.append('fileFieldNm_1', 'file_1');
245
+ formData.append('atchFileId', '');
246
+ }
247
+ await this.http.postMultipart('/mypage/mentoringReport/update.do', formData);
248
+ },
249
+ approval: async (options) => {
250
+ await this.requireAuth();
251
+ const params = {
252
+ menuNo: MENU_NO.REPORT_APPROVAL,
253
+ pageIndex: String(options?.page ?? 1),
254
+ };
255
+ if (options?.month)
256
+ params.searchMonth = options.month;
257
+ if (options?.reportType !== undefined)
258
+ params.searchReport = options.reportType;
259
+ const html = await this.http.get('/mypage/mentoringReport/resultList.do', params);
260
+ return {
261
+ items: formatters.parseApprovalList(html),
262
+ pagination: formatters.parsePagination(html),
263
+ };
264
+ },
265
+ };
140
266
  this.team = {
141
267
  show: async () => {
142
268
  await this.requireAuth();
@@ -181,7 +307,11 @@ export class SomaClient {
181
307
  };
182
308
  }
183
309
  async requireAuth() {
184
- const identity = await this.http.checkLogin();
310
+ let identity = await this.http.checkLogin();
311
+ if (!identity && this.loginCredentials) {
312
+ await this.http.login(this.loginCredentials.username, this.loginCredentials.password);
313
+ identity = await this.http.checkLogin();
314
+ }
185
315
  if (!identity) {
186
316
  throw new AuthenticationError();
187
317
  }
@@ -197,10 +327,17 @@ export class SomaClient {
197
327
  throw new Error('Username and password are required');
198
328
  }
199
329
  await this.http.login(resolvedUsername, resolvedPassword);
330
+ this.loginCredentials = {
331
+ username: resolvedUsername,
332
+ password: resolvedPassword,
333
+ };
200
334
  }
201
335
  async isLoggedIn() {
202
336
  return Boolean(await this.http.checkLogin());
203
337
  }
338
+ async logout() {
339
+ await this.http.logout();
340
+ }
204
341
  async saveCredentials(manager = new CredentialManager()) {
205
342
  const sessionCookie = this.http.getSessionCookie();
206
343
  const csrfToken = this.http.getCsrfToken();
@@ -210,7 +347,8 @@ export class SomaClient {
210
347
  await manager.setCredentials({
211
348
  sessionCookie,
212
349
  csrfToken,
213
- username: this.options.username,
350
+ username: this.loginCredentials?.username,
351
+ password: this.loginCredentials?.password,
214
352
  loggedInAt: new Date().toISOString(),
215
353
  });
216
354
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,23 @@
1
1
  import { Command } from 'commander';
2
+ import { CredentialManager } from '../credential-manager.js';
2
3
  import { SomaHttp } from '../http.js';
3
4
  import type { ExtractedSessionCandidate } from '../token-extractor.js';
4
5
  type ExtractedSessionValidator = Pick<SomaHttp, 'checkLogin' | 'extractCsrfToken'>;
6
+ type CredentialStore = Pick<CredentialManager, 'getCredentials' | 'remove' | 'setCredentials'>;
7
+ type StatusValidator = Pick<SomaHttp, 'checkLogin'>;
8
+ type ReloginHttp = Pick<SomaHttp, 'checkLogin' | 'getCsrfToken' | 'getSessionCookie' | 'login'>;
9
+ type BrowserExtractor = () => Promise<{
10
+ csrfToken: string;
11
+ sessionCookie: string;
12
+ } | null>;
5
13
  export declare function resolveExtractedCredentials(candidates: ExtractedSessionCandidate[], createValidator?: (sessionCookie: string) => ExtractedSessionValidator): Promise<{
6
14
  csrfToken: string;
7
15
  sessionCookie: string;
8
16
  } | null>;
17
+ export declare function inspectStoredAuthStatus(manager?: CredentialStore, createValidator?: (credentials: {
18
+ sessionCookie: string;
19
+ csrfToken: string;
20
+ }) => StatusValidator, createReloginHttp?: () => ReloginHttp, recoverViaBrowser?: BrowserExtractor): Promise<Record<string, boolean | null | string>>;
9
21
  export declare const authCommand: Command;
10
22
  export {};
11
23
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGlC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAKnE,KAAK,yBAAyB,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,kBAAkB,CAAC,CAAA;AAElF,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,yBAAyB,EAAE,EACvC,eAAe,GAAE,CAAC,aAAa,EAAE,MAAM,KAAK,yBACX,GAChC,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAkB9D;AAmHD,eAAO,MAAM,WAAW,SA2BrB,CAAA"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAIlC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AA2DnE,KAAK,yBAAyB,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,kBAAkB,CAAC,CAAA;AAClF,KAAK,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,QAAQ,GAAG,gBAAgB,CAAC,CAAA;AAC9F,KAAK,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;AACnD,KAAK,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,cAAc,GAAG,kBAAkB,GAAG,OAAO,CAAC,CAAA;AAC/F,KAAK,gBAAgB,GAAG,MAAM,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAA;AAe1F,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,yBAAyB,EAAE,EACvC,eAAe,GAAE,CAAC,aAAa,EAAE,MAAM,KAAK,yBACX,GAChC,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAkB9D;AAwED,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE,eAAyC,EAClD,eAAe,GAAE,CAAC,WAAW,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,KAAK,eACc,EAC9F,iBAAiB,GAAE,MAAM,WAAkC,EAC3D,iBAAiB,GAAE,gBAAmD,GACrE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAsElD;AAyCD,eAAO,MAAM,WAAW,SA2BrB,CAAA"}
@@ -1,8 +1,69 @@
1
1
  import { Command } from 'commander';
2
2
  import { CredentialManager } from '../credential-manager.js';
3
3
  import { SomaHttp } from '../http.js';
4
+ import { recoverSession } from '../session-recovery.js';
4
5
  import { handleError } from '../shared/utils/error-handler.js';
5
6
  import { formatOutput } from '../shared/utils/output.js';
7
+ async function promptInput(message) {
8
+ process.stdout.write(message);
9
+ const input = await Bun.stdin.text();
10
+ return input.trim();
11
+ }
12
+ async function promptPassword(message) {
13
+ process.stdout.write(message);
14
+ const originalStdin = process.stdin.isTTY
15
+ ? process.stdin
16
+ : null;
17
+ if (originalStdin?.setRawMode) {
18
+ originalStdin.setRawMode(true);
19
+ }
20
+ let password = '';
21
+ const decoder = new TextDecoder();
22
+ try {
23
+ for await (const chunk of Bun.stdin.stream()) {
24
+ const text = decoder.decode(chunk);
25
+ for (const char of text) {
26
+ const code = char.charCodeAt(0);
27
+ if (code === 13 || code === 10) {
28
+ // Enter key
29
+ process.stdout.write('\n');
30
+ return password;
31
+ }
32
+ else if (code === 3) {
33
+ // Ctrl+C
34
+ process.exit(1);
35
+ }
36
+ else if (code === 127) {
37
+ // Backspace
38
+ if (password.length > 0) {
39
+ password = password.slice(0, -1);
40
+ process.stdout.write('\b \b');
41
+ }
42
+ }
43
+ else if (code >= 32 && code <= 126) {
44
+ // Printable characters
45
+ password += char;
46
+ process.stdout.write('*');
47
+ }
48
+ }
49
+ }
50
+ }
51
+ finally {
52
+ if (originalStdin?.setRawMode) {
53
+ originalStdin.setRawMode(false);
54
+ }
55
+ }
56
+ return password;
57
+ }
58
+ async function defaultExtractBrowserCredentials() {
59
+ const { TokenExtractor } = (await import('../token-extractor.js'));
60
+ const candidates = await new TokenExtractor().extractCandidates();
61
+ if (candidates.length === 0)
62
+ return null;
63
+ return resolveExtractedCredentials(candidates);
64
+ }
65
+ const EXPIRED_SESSION_HINT = 'Session expired. Run: opensoma auth login or opensoma auth extract';
66
+ const UNVERIFIED_SESSION_HINT = 'Could not verify session. Try again or run: opensoma auth login or opensoma auth extract';
6
67
  export async function resolveExtractedCredentials(candidates, createValidator = (sessionCookie) => new SomaHttp({ sessionCookie })) {
7
68
  for (const candidate of candidates) {
8
69
  const http = createValidator(candidate.sessionCookie);
@@ -22,10 +83,16 @@ export async function resolveExtractedCredentials(candidates, createValidator =
22
83
  }
23
84
  async function loginAction(options) {
24
85
  try {
25
- const username = options.username ?? process.env.OPENSOMA_USERNAME;
26
- const password = options.password ?? process.env.OPENSOMA_PASSWORD;
86
+ let username = options.username ?? process.env.OPENSOMA_USERNAME;
87
+ let password = options.password ?? process.env.OPENSOMA_PASSWORD;
88
+ if (!username) {
89
+ username = await promptInput('Username: ');
90
+ }
91
+ if (!password) {
92
+ password = await promptPassword('Password: ');
93
+ }
27
94
  if (!username || !password) {
28
- throw new Error('Provide --username and --password or set OPENSOMA_USERNAME and OPENSOMA_PASSWORD');
95
+ throw new Error('Username and password are required');
29
96
  }
30
97
  const http = new SomaHttp();
31
98
  await http.login(username, password);
@@ -45,6 +112,7 @@ async function loginAction(options) {
45
112
  sessionCookie,
46
113
  csrfToken,
47
114
  username,
115
+ password,
48
116
  loggedInAt: new Date().toISOString(),
49
117
  });
50
118
  console.log(formatOutput({ ok: true, username, loggedIn: true }, options.pretty));
@@ -55,36 +123,96 @@ async function loginAction(options) {
55
123
  }
56
124
  async function logoutAction(options) {
57
125
  try {
58
- await new CredentialManager().remove();
59
- console.log(formatOutput({ ok: true, loggedIn: false }, options.pretty));
126
+ const manager = new CredentialManager();
127
+ const credentials = await manager.getCredentials();
128
+ let upstreamLoggedOut = false;
129
+ if (credentials) {
130
+ const http = new SomaHttp({ sessionCookie: credentials.sessionCookie, csrfToken: credentials.csrfToken });
131
+ try {
132
+ await http.logout();
133
+ upstreamLoggedOut = true;
134
+ }
135
+ catch { }
136
+ }
137
+ await manager.remove();
138
+ console.log(formatOutput({ ok: true, loggedIn: false, upstreamLoggedOut }, options.pretty));
60
139
  }
61
140
  catch (error) {
62
141
  handleError(error);
63
142
  }
64
143
  }
65
- async function statusAction(options) {
144
+ export async function inspectStoredAuthStatus(manager = new CredentialManager(), createValidator = (credentials) => new SomaHttp({ sessionCookie: credentials.sessionCookie, csrfToken: credentials.csrfToken }), createReloginHttp = () => new SomaHttp(), recoverViaBrowser = defaultExtractBrowserCredentials) {
145
+ const creds = await manager.getCredentials();
146
+ if (!creds) {
147
+ return { authenticated: false, credentials: null };
148
+ }
149
+ let identity = null;
66
150
  try {
67
- const manager = new CredentialManager();
68
- const creds = await manager.getCredentials();
69
- if (!creds) {
70
- console.log(formatOutput({ authenticated: false, credentials: null }, options.pretty));
71
- return;
151
+ identity = await createValidator(creds).checkLogin();
152
+ }
153
+ catch {
154
+ return {
155
+ authenticated: true,
156
+ valid: false,
157
+ username: creds.username ?? null,
158
+ loggedInAt: creds.loggedInAt ?? null,
159
+ hint: UNVERIFIED_SESSION_HINT,
160
+ };
161
+ }
162
+ if (!identity) {
163
+ try {
164
+ const refreshedCredentials = await recoverSession(creds, manager, createReloginHttp);
165
+ if (refreshedCredentials) {
166
+ return {
167
+ authenticated: true,
168
+ valid: true,
169
+ username: refreshedCredentials.username ?? null,
170
+ loggedInAt: refreshedCredentials.loggedInAt ?? null,
171
+ };
172
+ }
173
+ }
174
+ catch {
175
+ return {
176
+ authenticated: true,
177
+ valid: false,
178
+ username: creds.username ?? null,
179
+ loggedInAt: creds.loggedInAt ?? null,
180
+ hint: UNVERIFIED_SESSION_HINT,
181
+ };
72
182
  }
73
- let valid = false;
74
183
  try {
75
- const http = new SomaHttp({ sessionCookie: creds.sessionCookie, csrfToken: creds.csrfToken });
76
- valid = Boolean(await http.checkLogin());
184
+ const extracted = await recoverViaBrowser();
185
+ if (extracted) {
186
+ const loggedInAt = new Date().toISOString();
187
+ await manager.setCredentials({
188
+ sessionCookie: extracted.sessionCookie,
189
+ csrfToken: extracted.csrfToken,
190
+ loggedInAt,
191
+ });
192
+ return { authenticated: true, valid: true, username: null, loggedInAt };
193
+ }
77
194
  }
78
195
  catch {
79
- valid = false;
196
+ // Browser extraction failed — fall through to credential removal
80
197
  }
81
- console.log(formatOutput({
82
- authenticated: true,
83
- valid,
84
- username: creds.username ?? null,
85
- loggedInAt: creds.loggedInAt ?? null,
86
- ...(valid ? {} : { hint: 'Session expired. Run: opensoma auth login or opensoma auth extract' }),
87
- }, options.pretty));
198
+ await manager.remove();
199
+ return {
200
+ authenticated: false,
201
+ credentials: null,
202
+ clearedStaleCredentials: true,
203
+ hint: EXPIRED_SESSION_HINT,
204
+ };
205
+ }
206
+ return {
207
+ authenticated: true,
208
+ valid: true,
209
+ username: creds.username ?? null,
210
+ loggedInAt: creds.loggedInAt ?? null,
211
+ };
212
+ }
213
+ async function statusAction(options) {
214
+ try {
215
+ console.log(formatOutput(await inspectStoredAuthStatus(), options.pretty));
88
216
  }
89
217
  catch (error) {
90
218
  handleError(error);
@@ -122,7 +250,7 @@ export const authCommand = new Command('auth')
122
250
  .option('--pretty', 'Pretty print JSON output')
123
251
  .action(loginAction))
124
252
  .addCommand(new Command('logout')
125
- .description('Remove saved credentials')
253
+ .description('Log out upstream session and remove saved credentials')
126
254
  .option('--pretty', 'Pretty print JSON output')
127
255
  .action(logoutAction))
128
256
  .addCommand(new Command('status')