appsec-agent 2.7.0 → 3.0.1

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 (83) hide show
  1. package/README.md +57 -18
  2. package/conf/appsec_agent.yaml +13 -0
  3. package/dist/bin/agent-run.js +16 -18
  4. package/dist/bin/agent-run.js.map +1 -1
  5. package/dist/conf/appsec_agent.yaml +13 -0
  6. package/dist/src/__tests__/mocks/codex_sdk.d.ts +53 -0
  7. package/dist/src/__tests__/mocks/codex_sdk.d.ts.map +1 -0
  8. package/dist/src/__tests__/mocks/codex_sdk.js +8 -0
  9. package/dist/src/__tests__/mocks/codex_sdk.js.map +1 -0
  10. package/dist/src/agent_actions.d.ts +22 -2
  11. package/dist/src/agent_actions.d.ts.map +1 -1
  12. package/dist/src/agent_actions.js +144 -26
  13. package/dist/src/agent_actions.js.map +1 -1
  14. package/dist/src/agent_options.d.ts +43 -83
  15. package/dist/src/agent_options.d.ts.map +1 -1
  16. package/dist/src/agent_options.js +237 -280
  17. package/dist/src/agent_options.js.map +1 -1
  18. package/dist/src/index.d.ts +1 -0
  19. package/dist/src/index.d.ts.map +1 -1
  20. package/dist/src/index.js +7 -1
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/llm_query.d.ts +4 -43
  23. package/dist/src/llm_query.d.ts.map +1 -1
  24. package/dist/src/llm_query.js +4 -145
  25. package/dist/src/llm_query.js.map +1 -1
  26. package/dist/src/main.d.ts.map +1 -1
  27. package/dist/src/main.js +75 -7
  28. package/dist/src/main.js.map +1 -1
  29. package/dist/src/mcp_internal.d.ts +13 -0
  30. package/dist/src/mcp_internal.d.ts.map +1 -0
  31. package/dist/src/mcp_internal.js +34 -0
  32. package/dist/src/mcp_internal.js.map +1 -0
  33. package/dist/src/providers/claude_provider.d.ts +18 -0
  34. package/dist/src/providers/claude_provider.d.ts.map +1 -0
  35. package/dist/src/providers/claude_provider.js +27 -0
  36. package/dist/src/providers/claude_provider.js.map +1 -0
  37. package/dist/src/providers/claude_role_spec.d.ts +10 -0
  38. package/dist/src/providers/claude_role_spec.d.ts.map +1 -0
  39. package/dist/src/providers/claude_role_spec.js +85 -0
  40. package/dist/src/providers/claude_role_spec.js.map +1 -0
  41. package/dist/src/providers/codex_model.d.ts +12 -0
  42. package/dist/src/providers/codex_model.d.ts.map +1 -0
  43. package/dist/src/providers/codex_model.js +45 -0
  44. package/dist/src/providers/codex_model.js.map +1 -0
  45. package/dist/src/providers/codex_provider.d.ts +30 -0
  46. package/dist/src/providers/codex_provider.d.ts.map +1 -0
  47. package/dist/src/providers/codex_provider.js +170 -0
  48. package/dist/src/providers/codex_provider.js.map +1 -0
  49. package/dist/src/providers/codex_role_spec.d.ts +16 -0
  50. package/dist/src/providers/codex_role_spec.d.ts.map +1 -0
  51. package/dist/src/providers/codex_role_spec.js +63 -0
  52. package/dist/src/providers/codex_role_spec.js.map +1 -0
  53. package/dist/src/providers/query_message.d.ts +45 -0
  54. package/dist/src/providers/query_message.d.ts.map +1 -0
  55. package/dist/src/providers/query_message.js +8 -0
  56. package/dist/src/providers/query_message.js.map +1 -0
  57. package/dist/src/providers/resolve_provider.d.ts +10 -0
  58. package/dist/src/providers/resolve_provider.d.ts.map +1 -0
  59. package/dist/src/providers/resolve_provider.js +29 -0
  60. package/dist/src/providers/resolve_provider.js.map +1 -0
  61. package/dist/src/providers/role_spec.d.ts +39 -0
  62. package/dist/src/providers/role_spec.d.ts.map +1 -0
  63. package/dist/src/providers/role_spec.js +8 -0
  64. package/dist/src/providers/role_spec.js.map +1 -0
  65. package/dist/src/providers/structured_output.d.ts +21 -0
  66. package/dist/src/providers/structured_output.d.ts.map +1 -0
  67. package/dist/src/providers/structured_output.js +61 -0
  68. package/dist/src/providers/structured_output.js.map +1 -0
  69. package/dist/src/providers/types.d.ts +18 -0
  70. package/dist/src/providers/types.d.ts.map +1 -0
  71. package/dist/src/providers/types.js +15 -0
  72. package/dist/src/providers/types.js.map +1 -0
  73. package/dist/src/schemas/fp_adversary_pass.d.ts +188 -0
  74. package/dist/src/schemas/fp_adversary_pass.d.ts.map +1 -0
  75. package/dist/src/schemas/fp_adversary_pass.js +258 -0
  76. package/dist/src/schemas/fp_adversary_pass.js.map +1 -0
  77. package/dist/src/utils.js +1 -1
  78. package/dist/src/utils.js.map +1 -1
  79. package/package.json +4 -4
  80. package/dist/src/openai_tools.d.ts +0 -26
  81. package/dist/src/openai_tools.d.ts.map +0 -1
  82. package/dist/src/openai_tools.js +0 -194
  83. package/dist/src/openai_tools.js.map +0 -1
@@ -1,194 +0,0 @@
1
- "use strict";
2
- /**
3
- * OpenAI fallback tools: write_file and stream accumulation.
4
- * Kept in a separate file so the write tool can be identified and maintained easily.
5
- *
6
- * Author: Sam Li
7
- */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
- Object.defineProperty(o, "default", { enumerable: true, value: v });
21
- }) : function(o, v) {
22
- o["default"] = v;
23
- });
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.WRITE_FILE_TOOL = void 0;
43
- exports.messageReducer = messageReducer;
44
- exports.executeWriteToolCalls = executeWriteToolCalls;
45
- const fs = __importStar(require("fs"));
46
- const utils_1 = require("./utils");
47
- /** OpenAI tool definition for writing a file (matches Anthropic Write tool behavior). */
48
- exports.WRITE_FILE_TOOL = {
49
- type: 'function',
50
- function: {
51
- name: 'write_file',
52
- description: 'Write content to a file at the given path. Use a relative path under the current working directory. Create the file or overwrite it.',
53
- parameters: {
54
- type: 'object',
55
- properties: {
56
- path: {
57
- type: 'string',
58
- description: 'Relative path to the file (e.g. code_review_report.md)'
59
- },
60
- content: {
61
- type: 'string',
62
- description: 'Full text content to write to the file'
63
- }
64
- },
65
- required: ['path', 'content']
66
- }
67
- }
68
- };
69
- /**
70
- * Accumulate streaming chunks into a full ChatCompletionMessage (content + tool_calls).
71
- * Mirrors OpenAI stream-with-tools behavior so we can execute tool_calls after the stream.
72
- */
73
- function messageReducer(previous, chunk) {
74
- const choice = chunk.choices?.[0];
75
- if (!choice?.delta)
76
- return previous;
77
- const delta = choice.delta;
78
- const acc = { ...previous };
79
- const accRecord = acc;
80
- for (const [key, value] of Object.entries(delta)) {
81
- if (value === undefined)
82
- continue;
83
- const k = key;
84
- if (accRecord[k] === undefined || accRecord[k] === null) {
85
- accRecord[k] = Array.isArray(value)
86
- ? value.map((v) => {
87
- const { index: _i, ...rest } = v;
88
- return rest;
89
- })
90
- : value;
91
- }
92
- else if (typeof accRecord[k] === 'string' && typeof value === 'string') {
93
- accRecord[k] = accRecord[k] + value;
94
- }
95
- else if (Array.isArray(accRecord[k]) && Array.isArray(value)) {
96
- const accArray = accRecord[k];
97
- for (let i = 0; i < value.length; i++) {
98
- const chunkItem = value[i];
99
- const { index, ...rest } = chunkItem;
100
- const idx = index ?? i;
101
- if (idx >= accArray.length) {
102
- accArray[idx] = rest;
103
- }
104
- else {
105
- const existing = accArray[idx];
106
- accArray[idx] = mergeToolCallPart(existing, rest);
107
- }
108
- }
109
- }
110
- else if (typeof accRecord[k] === 'object' &&
111
- accRecord[k] !== null &&
112
- typeof value === 'object' &&
113
- value !== null) {
114
- accRecord[k] = mergeToolCallPart(accRecord[k], value);
115
- }
116
- }
117
- return accRecord;
118
- }
119
- function mergeToolCallPart(existing, part) {
120
- const out = { ...existing };
121
- for (const [k, v] of Object.entries(part)) {
122
- if (v === undefined)
123
- continue;
124
- if (out[k] === undefined || out[k] === null) {
125
- out[k] = v;
126
- }
127
- else if (typeof out[k] === 'string' && typeof v === 'string') {
128
- out[k] = out[k] + v;
129
- }
130
- else if (typeof out[k] === 'object' && typeof v === 'object' && v !== null) {
131
- out[k] = mergeToolCallPart(out[k] ?? {}, v);
132
- }
133
- }
134
- return out;
135
- }
136
- /**
137
- * Execute write_file tool calls: validate path under baseDir and write content.
138
- * Returns one result per tool call (success or error message).
139
- */
140
- function executeWriteToolCalls(toolCalls, baseDir) {
141
- const results = [];
142
- for (const call of toolCalls) {
143
- if (call.type !== 'function' || call.function?.name !== 'write_file') {
144
- results.push({
145
- tool_call_id: call.id,
146
- success: false,
147
- error: `Unknown tool: ${call.function?.name ?? 'unknown'}`
148
- });
149
- continue;
150
- }
151
- let args;
152
- try {
153
- args = JSON.parse(typeof call.function.arguments === 'string'
154
- ? call.function.arguments
155
- : JSON.stringify(call.function.arguments));
156
- }
157
- catch {
158
- results.push({ tool_call_id: call.id, success: false, error: 'Invalid JSON arguments' });
159
- continue;
160
- }
161
- const pathArg = args.path;
162
- const content = args.content;
163
- if (pathArg === undefined || content === undefined) {
164
- results.push({
165
- tool_call_id: call.id,
166
- success: false,
167
- error: 'Missing path or content'
168
- });
169
- continue;
170
- }
171
- const resolvedPath = (0, utils_1.validateOutputFilePath)(pathArg, baseDir);
172
- if (resolvedPath === null) {
173
- results.push({
174
- tool_call_id: call.id,
175
- success: false,
176
- error: 'Invalid or disallowed path'
177
- });
178
- continue;
179
- }
180
- try {
181
- fs.writeFileSync(resolvedPath, content, 'utf8');
182
- results.push({ tool_call_id: call.id, success: true });
183
- }
184
- catch (e) {
185
- results.push({
186
- tool_call_id: call.id,
187
- success: false,
188
- error: e instanceof Error ? e.message : String(e)
189
- });
190
- }
191
- }
192
- return results;
193
- }
194
- //# sourceMappingURL=openai_tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai_tools.js","sourceRoot":"","sources":["../../src/openai_tools.ts"],"names":[],"mappings":"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"}