@amodalai/runtime 0.1.16 → 0.1.17

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 (70) hide show
  1. package/dist/src/agent/feedback-store.d.ts +39 -0
  2. package/dist/src/agent/feedback-store.js +98 -0
  3. package/dist/src/agent/feedback-store.js.map +1 -0
  4. package/dist/src/agent/local-server.js +9 -2
  5. package/dist/src/agent/local-server.js.map +1 -1
  6. package/dist/src/agent/routes/admin-chat.d.ts +1 -0
  7. package/dist/src/agent/routes/admin-chat.js +1 -1
  8. package/dist/src/agent/routes/admin-chat.js.map +1 -1
  9. package/dist/src/agent/routes/evals.js +34 -47
  10. package/dist/src/agent/routes/evals.js.map +1 -1
  11. package/dist/src/agent/routes/feedback.d.ts +11 -0
  12. package/dist/src/agent/routes/feedback.js +72 -0
  13. package/dist/src/agent/routes/feedback.js.map +1 -0
  14. package/dist/src/agent/routes/files.js +118 -12
  15. package/dist/src/agent/routes/files.js.map +1 -1
  16. package/dist/src/agent/routes/inspect.js +33 -0
  17. package/dist/src/agent/routes/inspect.js.map +1 -1
  18. package/dist/src/cron/heartbeat-runner.d.ts +3 -6
  19. package/dist/src/cron/heartbeat-runner.js +1 -10
  20. package/dist/src/cron/heartbeat-runner.js.map +1 -1
  21. package/dist/src/index.d.ts +4 -5
  22. package/dist/src/index.js +3 -10
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/middleware/auth.d.ts +3 -19
  25. package/dist/src/middleware/auth.js +0 -118
  26. package/dist/src/middleware/auth.js.map +1 -1
  27. package/dist/src/routes/ai-stream.d.ts +8 -7
  28. package/dist/src/routes/ai-stream.js +3 -16
  29. package/dist/src/routes/ai-stream.js.map +1 -1
  30. package/dist/src/routes/chat-stream.d.ts +4 -3
  31. package/dist/src/routes/chat-stream.js +3 -16
  32. package/dist/src/routes/chat-stream.js.map +1 -1
  33. package/dist/src/routes/chat.d.ts +4 -2
  34. package/dist/src/routes/chat.js +2 -14
  35. package/dist/src/routes/chat.js.map +1 -1
  36. package/dist/src/routes/chat.test.js +2 -2
  37. package/dist/src/routes/chat.test.js.map +1 -1
  38. package/dist/src/server.d.ts +16 -3
  39. package/dist/src/server.js +24 -25
  40. package/dist/src/server.js.map +1 -1
  41. package/dist/src/session/admin-file-tools.d.ts +136 -0
  42. package/dist/src/session/admin-file-tools.js +240 -0
  43. package/dist/src/session/admin-file-tools.js.map +1 -0
  44. package/dist/src/session/session-manager.d.ts +37 -3
  45. package/dist/src/session/session-manager.js +174 -44
  46. package/dist/src/session/session-manager.js.map +1 -1
  47. package/dist/src/session/session-manager.test.js +30 -52
  48. package/dist/src/session/session-manager.test.js.map +1 -1
  49. package/dist/src/session/session-runner.d.ts +29 -13
  50. package/dist/src/session/session-runner.js +28 -91
  51. package/dist/src/session/session-runner.js.map +1 -1
  52. package/dist/src/session/session-runner.test.js +70 -80
  53. package/dist/src/session/session-runner.test.js.map +1 -1
  54. package/dist/tsconfig.tsbuildinfo +1 -1
  55. package/package.json +2 -2
  56. package/dist/src/audit/audit-client.d.ts +0 -46
  57. package/dist/src/audit/audit-client.js +0 -83
  58. package/dist/src/audit/audit-client.js.map +0 -1
  59. package/dist/src/middleware/auth.test.d.ts +0 -6
  60. package/dist/src/middleware/auth.test.js +0 -260
  61. package/dist/src/middleware/auth.test.js.map +0 -1
  62. package/dist/src/routes/sessions.d.ts +0 -14
  63. package/dist/src/routes/sessions.js +0 -82
  64. package/dist/src/routes/sessions.js.map +0 -1
  65. package/dist/src/utils/jwt-verify.d.ts +0 -19
  66. package/dist/src/utils/jwt-verify.js +0 -32
  67. package/dist/src/utils/jwt-verify.js.map +0 -1
  68. package/dist/src/utils/jwt-verify.test.d.ts +0 -6
  69. package/dist/src/utils/jwt-verify.test.js +0 -150
  70. package/dist/src/utils/jwt-verify.test.js.map +0 -1
@@ -1,150 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Amodal Labs, Inc.
4
- * SPDX-License-Identifier: MIT
5
- */
6
- import { describe, it, expect, beforeAll, afterAll } from 'vitest';
7
- import express from 'express';
8
- import { generateKeyPair, SignJWT, exportJWK, calculateJwkThumbprint } from 'jose';
9
- import { createJWTVerifier } from './jwt-verify.js';
10
- describe('jwt-verify', () => {
11
- let privateKey;
12
- let publicKey;
13
- let kid;
14
- let jwksServer;
15
- let jwksUrl;
16
- let verifyJWT;
17
- beforeAll(async () => {
18
- // Generate key pair for tests
19
- const pair = await generateKeyPair('ES256', { extractable: true });
20
- privateKey = pair.privateKey;
21
- publicKey = pair.publicKey;
22
- const publicJwk = await exportJWK(publicKey);
23
- kid = await calculateJwkThumbprint(publicJwk);
24
- // Start a minimal JWKS server
25
- const app = express();
26
- app.get('/.well-known/jwks.json', (_req, res) => {
27
- res.json({
28
- keys: [{ ...publicJwk, kid, alg: 'ES256', use: 'sig' }],
29
- });
30
- });
31
- jwksServer = await new Promise((resolve) => {
32
- const s = app.listen(0, '127.0.0.1', () => {
33
- resolve(s);
34
- });
35
- });
36
- const addr = jwksServer.address();
37
- jwksUrl = `http://127.0.0.1:${addr.port}/.well-known/jwks.json`;
38
- verifyJWT = createJWTVerifier({ jwksUrl });
39
- });
40
- afterAll(async () => {
41
- if (jwksServer) {
42
- await new Promise((resolve, reject) => {
43
- jwksServer.close((err) => {
44
- if (err)
45
- reject(err);
46
- else
47
- resolve();
48
- });
49
- });
50
- }
51
- });
52
- it('verifies a valid platform JWT', async () => {
53
- const token = await new SignJWT({
54
- org_id: 'org-1',
55
- app_id: 'app-1',
56
- })
57
- .setProtectedHeader({ alg: 'ES256', kid })
58
- .setIssuer('aitize-platform')
59
- .setSubject('app-1')
60
- .setIssuedAt()
61
- .setExpirationTime('1h')
62
- .sign(privateKey);
63
- const claims = await verifyJWT(token);
64
- expect(claims).not.toBeNull();
65
- expect(claims?.org_id).toBe('org-1');
66
- expect(claims?.app_id).toBe('app-1');
67
- expect(claims?.app_id).toBe('app-1');
68
- });
69
- it('returns null for expired JWT', async () => {
70
- const token = await new SignJWT({
71
- org_id: 'org-1',
72
- app_id: 'app-1',
73
- })
74
- .setProtectedHeader({ alg: 'ES256', kid })
75
- .setIssuer('aitize-platform')
76
- .setSubject('app-1')
77
- .setIssuedAt(Math.floor(Date.now() / 1000) - 7200)
78
- .setExpirationTime(Math.floor(Date.now() / 1000) - 3600)
79
- .sign(privateKey);
80
- const claims = await verifyJWT(token);
81
- expect(claims).toBeNull();
82
- });
83
- it('returns null for wrong issuer', async () => {
84
- const token = await new SignJWT({
85
- org_id: 'org-1',
86
- app_id: 'app-1',
87
- })
88
- .setProtectedHeader({ alg: 'ES256', kid })
89
- .setIssuer('wrong-issuer')
90
- .setSubject('app-1')
91
- .setIssuedAt()
92
- .setExpirationTime('1h')
93
- .sign(privateKey);
94
- const claims = await verifyJWT(token);
95
- expect(claims).toBeNull();
96
- });
97
- it('returns null for invalid token', async () => {
98
- const claims = await verifyJWT('not-a-jwt');
99
- expect(claims).toBeNull();
100
- });
101
- it('extracts actor from JWT claims when present', async () => {
102
- const token = await new SignJWT({
103
- org_id: 'org-1',
104
- app_id: 'app-1',
105
- actor: 'alice@example.com',
106
- })
107
- .setProtectedHeader({ alg: 'ES256', kid })
108
- .setIssuer('aitize-platform')
109
- .setSubject('app-1')
110
- .setIssuedAt()
111
- .setExpirationTime('1h')
112
- .sign(privateKey);
113
- const claims = await verifyJWT(token);
114
- expect(claims).not.toBeNull();
115
- expect(claims?.actor).toBe('alice@example.com');
116
- });
117
- it('omits actor from claims when not in JWT', async () => {
118
- const token = await new SignJWT({
119
- org_id: 'org-1',
120
- app_id: 'app-1',
121
- })
122
- .setProtectedHeader({ alg: 'ES256', kid })
123
- .setIssuer('aitize-platform')
124
- .setSubject('app-1')
125
- .setIssuedAt()
126
- .setExpirationTime('1h')
127
- .sign(privateKey);
128
- const claims = await verifyJWT(token);
129
- expect(claims).not.toBeNull();
130
- expect(claims?.actor).toBeUndefined();
131
- });
132
- it('returns null for JWT signed with different key', async () => {
133
- const otherPair = await generateKeyPair('ES256', { extractable: true });
134
- const otherJwk = await exportJWK(otherPair.publicKey);
135
- const otherKid = await calculateJwkThumbprint(otherJwk);
136
- const token = await new SignJWT({
137
- org_id: 'org-1',
138
- app_id: 'app-1',
139
- })
140
- .setProtectedHeader({ alg: 'ES256', kid: otherKid })
141
- .setIssuer('aitize-platform')
142
- .setSubject('app-1')
143
- .setIssuedAt()
144
- .setExpirationTime('1h')
145
- .sign(otherPair.privateKey);
146
- const claims = await verifyJWT(token);
147
- expect(claims).toBeNull();
148
- });
149
- });
150
- //# sourceMappingURL=jwt-verify.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jwt-verify.test.js","sourceRoot":"","sources":["../../../src/utils/jwt-verify.test.ts"],"names":[],"mappings":"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"}