@oisheek_c/codeforge 1.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.
- package/LICENSE +0 -0
- package/README.md +7 -0
- package/apps/cli/bin/codeforge.cmd +2 -0
- package/apps/cli/src/bootstrap.js +115 -0
- package/apps/cli/src/cli.js +189 -0
- package/apps/cli/src/dev/git.js +17 -0
- package/apps/cli/src/dev/index.js +68 -0
- package/apps/cli/src/dev/provider.js +48 -0
- package/apps/cli/src/dev/scanner.js +14 -0
- package/apps/cli/src/index.js +31 -0
- package/bin/codeforge.js +2 -0
- package/package.json +63 -0
- package/packages/agent/contextBuilder.js +234 -0
- package/packages/agent/executor.js +1729 -0
- package/packages/agent/fallback.js +129 -0
- package/packages/agent/index.js +26 -0
- package/packages/agent/intent.js +73 -0
- package/packages/agent/modelSelector.js +469 -0
- package/packages/agent/planner.js +379 -0
- package/packages/agent/rag.js +412 -0
- package/packages/agent/ragSelector.js +570 -0
- package/packages/agent/router.js +121 -0
- package/packages/agent/thinking.js +54 -0
- package/packages/agent/toolCalls.js +258 -0
- package/packages/config/config.js +391 -0
- package/packages/config/defaults.js +72 -0
- package/packages/config/index.js +2 -0
- package/packages/core/approvalPolicy.js +140 -0
- package/packages/core/context.js +0 -0
- package/packages/core/message.js +0 -0
- package/packages/core/plan.js +0 -0
- package/packages/core/reasoning.js +0 -0
- package/packages/core/result.js +0 -0
- package/packages/core/retrieval.js +0 -0
- package/packages/core/tool.js +536 -0
- package/packages/git/branch.js +7 -0
- package/packages/git/commit.js +16 -0
- package/packages/git/diff.js +15 -0
- package/packages/git/git.js +35 -0
- package/packages/git/index.js +6 -0
- package/packages/git/remote.js +9 -0
- package/packages/git/status.js +11 -0
- package/packages/memory/index.js +0 -0
- package/packages/memory/project.js +0 -0
- package/packages/memory/session.js +0 -0
- package/packages/prompts/builder.js +43 -0
- package/packages/prompts/coder.js +38 -0
- package/packages/prompts/index.js +5 -0
- package/packages/prompts/planner.js +49 -0
- package/packages/prompts/reviewer.js +38 -0
- package/packages/prompts/system.js +94 -0
- package/packages/providers/index.js +31 -0
- package/packages/providers/openrouter.js +380 -0
- package/packages/reasoning/budget.js +0 -0
- package/packages/reasoning/chain.js +0 -0
- package/packages/reasoning/coder.js +0 -0
- package/packages/reasoning/evaluator.js +0 -0
- package/packages/reasoning/index.js +8 -0
- package/packages/reasoning/planner.js +0 -0
- package/packages/reasoning/reflector.js +0 -0
- package/packages/reasoning/reviewer.js +0 -0
- package/packages/reasoning/router.js +0 -0
- package/packages/retrieval/budget.js +92 -0
- package/packages/retrieval/cache.js +84 -0
- package/packages/retrieval/embeddings.js +147 -0
- package/packages/retrieval/graph.js +151 -0
- package/packages/retrieval/imports.js +74 -0
- package/packages/retrieval/index.js +9 -0
- package/packages/retrieval/parser/extractors/calls.js +43 -0
- package/packages/retrieval/parser/extractors/comments.js +49 -0
- package/packages/retrieval/parser/extractors/diagnostics.js +21 -0
- package/packages/retrieval/parser/extractors/exports.js +71 -0
- package/packages/retrieval/parser/extractors/imports.js +40 -0
- package/packages/retrieval/parser/extractors/index.js +12 -0
- package/packages/retrieval/parser/extractors/metrics.js +78 -0
- package/packages/retrieval/parser/extractors/symbols.js +51 -0
- package/packages/retrieval/parser/extractors/todos.js +53 -0
- package/packages/retrieval/parser/helpers.js +138 -0
- package/packages/retrieval/parser/index.js +10 -0
- package/packages/retrieval/parser/languages/c.js +14 -0
- package/packages/retrieval/parser/languages/cpp.js +21 -0
- package/packages/retrieval/parser/languages/csharp.js +14 -0
- package/packages/retrieval/parser/languages/go.js +14 -0
- package/packages/retrieval/parser/languages/index.js +12 -0
- package/packages/retrieval/parser/languages/java.js +14 -0
- package/packages/retrieval/parser/languages/javascript.js +14 -0
- package/packages/retrieval/parser/languages/php.js +14 -0
- package/packages/retrieval/parser/languages/python.js +14 -0
- package/packages/retrieval/parser/languages/ruby.js +14 -0
- package/packages/retrieval/parser/languages/rust.js +14 -0
- package/packages/retrieval/parser/languages/swift.js +14 -0
- package/packages/retrieval/parser/languages/typescript.js +14 -0
- package/packages/retrieval/parser/languages.js +218 -0
- package/packages/retrieval/parser/parseFile.js +79 -0
- package/packages/retrieval/parser/parseRepository.js +78 -0
- package/packages/retrieval/parser/queries/c.js +148 -0
- package/packages/retrieval/parser/queries/cpp.js +198 -0
- package/packages/retrieval/parser/queries/csharp.js +151 -0
- package/packages/retrieval/parser/queries/go.js +124 -0
- package/packages/retrieval/parser/queries/index.js +35 -0
- package/packages/retrieval/parser/queries/java.js +128 -0
- package/packages/retrieval/parser/queries/javascript.js +181 -0
- package/packages/retrieval/parser/queries/php.js +140 -0
- package/packages/retrieval/parser/queries/python.js +110 -0
- package/packages/retrieval/parser/queries/ruby.js +105 -0
- package/packages/retrieval/parser/queries/rust.js +175 -0
- package/packages/retrieval/parser/queries/swift.js +134 -0
- package/packages/retrieval/parser/queries/typescript.js +202 -0
- package/packages/retrieval/parser/registry.js +107 -0
- package/packages/retrieval/parser/traverse.js +82 -0
- package/packages/retrieval/parser/types.js +239 -0
- package/packages/retrieval/parser.js +78 -0
- package/packages/retrieval/ranker.js +73 -0
- package/packages/retrieval/retriever.js +910 -0
- package/packages/retrieval/symbols.js +145 -0
- package/packages/scanner/detect.js +69 -0
- package/packages/scanner/ignore.js +12 -0
- package/packages/scanner/index.js +2 -0
- package/packages/scanner/root.js +21 -0
- package/packages/scanner/scanner.js +35 -0
- package/packages/scanner/tree.js +45 -0
- package/packages/terminal/activity.js +514 -0
- package/packages/terminal/banner.js +34 -0
- package/packages/terminal/colors.js +16 -0
- package/packages/terminal/dashboard.js +94 -0
- package/packages/terminal/index.js +19 -0
- package/packages/terminal/logger.js +43 -0
- package/packages/terminal/prompt.js +11 -0
- package/packages/terminal/renderer.js +1209 -0
- package/packages/terminal/spinner.js +9 -0
- package/packages/tools/editFile.js +261 -0
- package/packages/tools/filesystem.js +82 -0
- package/packages/tools/index.js +24 -0
- package/packages/tools/readFile.js +101 -0
- package/packages/tools/registry.js +227 -0
- package/packages/tools/searchFiles.js +322 -0
- package/packages/tools/shell.js +352 -0
- package/packages/tools/writeFile.js +212 -0
- package/packages/utils/constants.js +0 -0
- package/packages/utils/helpers.js +0 -0
- package/packages/utils/logger.js +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export const defaultConfig = {
|
|
2
|
+
configVersion: 2,
|
|
3
|
+
provider: "openrouter",
|
|
4
|
+
|
|
5
|
+
models: {
|
|
6
|
+
fast:
|
|
7
|
+
"nvidia/nemotron-3-super-120b-a12b:free",
|
|
8
|
+
|
|
9
|
+
general:
|
|
10
|
+
"nvidia/nemotron-3-super-120b-a12b:free",
|
|
11
|
+
|
|
12
|
+
coding:
|
|
13
|
+
"cohere/north-mini-code:free",
|
|
14
|
+
|
|
15
|
+
heavyCoding:
|
|
16
|
+
"poolside/laguna-s-2.1:free",
|
|
17
|
+
|
|
18
|
+
planner:
|
|
19
|
+
"nvidia/nemotron-3-ultra-550b-a55b:free",
|
|
20
|
+
|
|
21
|
+
subagent:
|
|
22
|
+
"poolside/laguna-xs-2.1:free",
|
|
23
|
+
|
|
24
|
+
vision:
|
|
25
|
+
"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
|
|
26
|
+
|
|
27
|
+
documentVision:
|
|
28
|
+
"nvidia/nemotron-nano-12b-v2-vl:free",
|
|
29
|
+
|
|
30
|
+
embedding:
|
|
31
|
+
"nvidia/nemotron-3-embed-1b:free",
|
|
32
|
+
|
|
33
|
+
reranker:
|
|
34
|
+
"nvidia/llama-nemotron-rerank-vl-1b-v2:free",
|
|
35
|
+
|
|
36
|
+
fallback:
|
|
37
|
+
"cohere/north-mini-code:free",
|
|
38
|
+
|
|
39
|
+
emergency:
|
|
40
|
+
"openrouter/free",
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
selectors: {
|
|
44
|
+
provider: "openrouter",
|
|
45
|
+
|
|
46
|
+
rag: "nvidia/nemotron-3-super-120b-a12b:free",
|
|
47
|
+
|
|
48
|
+
model: "nvidia/nemotron-3-super-120b-a12b:free",
|
|
49
|
+
|
|
50
|
+
maxTokens: 128,
|
|
51
|
+
|
|
52
|
+
modelMaxTokens: 256,
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
temperature: 0.2,
|
|
56
|
+
|
|
57
|
+
maxTokens: 4096,
|
|
58
|
+
|
|
59
|
+
maxAttempts: 3,
|
|
60
|
+
|
|
61
|
+
maxToolRounds: 10,
|
|
62
|
+
|
|
63
|
+
confirmEdits: true,
|
|
64
|
+
|
|
65
|
+
theme: "default",
|
|
66
|
+
|
|
67
|
+
debug: false,
|
|
68
|
+
|
|
69
|
+
telemetry: false,
|
|
70
|
+
|
|
71
|
+
agentDashboard: true,
|
|
72
|
+
};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
const POLICY_DECISIONS = new Set([
|
|
2
|
+
"allow",
|
|
3
|
+
"deny",
|
|
4
|
+
"approval_required",
|
|
5
|
+
]);
|
|
6
|
+
|
|
7
|
+
function createDecision({
|
|
8
|
+
decision,
|
|
9
|
+
code,
|
|
10
|
+
reason = null,
|
|
11
|
+
}) {
|
|
12
|
+
if (!POLICY_DECISIONS.has(decision)) {
|
|
13
|
+
throw new TypeError(
|
|
14
|
+
`Invalid policy decision: ${decision}`
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return Object.freeze({
|
|
19
|
+
decision,
|
|
20
|
+
code,
|
|
21
|
+
reason,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function allow(
|
|
26
|
+
reason = null
|
|
27
|
+
) {
|
|
28
|
+
return createDecision({
|
|
29
|
+
decision: "allow",
|
|
30
|
+
code: "policy_allowed",
|
|
31
|
+
reason,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function deny(reason) {
|
|
36
|
+
return createDecision({
|
|
37
|
+
decision: "deny",
|
|
38
|
+
code: "policy_denied",
|
|
39
|
+
reason,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function requireApproval(reason) {
|
|
44
|
+
return createDecision({
|
|
45
|
+
decision: "approval_required",
|
|
46
|
+
code: "policy_approval_required",
|
|
47
|
+
reason,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function evaluateApprovalPolicy(
|
|
52
|
+
tool,
|
|
53
|
+
{
|
|
54
|
+
trustedSources = ["builtin"],
|
|
55
|
+
} = {}
|
|
56
|
+
) {
|
|
57
|
+
if (
|
|
58
|
+
!tool ||
|
|
59
|
+
typeof tool !== "object"
|
|
60
|
+
) {
|
|
61
|
+
throw new TypeError(
|
|
62
|
+
"Tool is required for approval policy evaluation."
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (!Array.isArray(trustedSources)) {
|
|
67
|
+
throw new TypeError(
|
|
68
|
+
"Trusted sources must be an array."
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/*
|
|
73
|
+
* Explicit tool declarations take precedence.
|
|
74
|
+
*/
|
|
75
|
+
|
|
76
|
+
if (tool.approval === "never") {
|
|
77
|
+
return allow(
|
|
78
|
+
"Tool does not require approval."
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (tool.approval === "always") {
|
|
83
|
+
return requireApproval(
|
|
84
|
+
"Tool always requires explicit approval."
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/*
|
|
89
|
+
* approval === "policy"
|
|
90
|
+
*
|
|
91
|
+
* Policy decisions are based on both the
|
|
92
|
+
* tool source and its declared side effect.
|
|
93
|
+
*/
|
|
94
|
+
|
|
95
|
+
const trusted =
|
|
96
|
+
trustedSources.includes(tool.source);
|
|
97
|
+
|
|
98
|
+
if (!trusted) {
|
|
99
|
+
return requireApproval(
|
|
100
|
+
`Tool source '${tool.source}' is not trusted.`
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (tool.sideEffect === "none") {
|
|
105
|
+
return allow(
|
|
106
|
+
"Trusted read-only tool."
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (tool.sideEffect === "write") {
|
|
111
|
+
return requireApproval(
|
|
112
|
+
"Tool can modify project state."
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (tool.sideEffect === "execute") {
|
|
117
|
+
return requireApproval(
|
|
118
|
+
"Tool can execute commands."
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (tool.sideEffect === "destructive") {
|
|
123
|
+
return requireApproval(
|
|
124
|
+
"Tool can perform destructive operations."
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return deny(
|
|
129
|
+
`Unsupported tool side effect: ${tool.sideEffect}`
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export const PolicyDecision =
|
|
134
|
+
Object.freeze({
|
|
135
|
+
ALLOW: "allow",
|
|
136
|
+
DENY: "deny",
|
|
137
|
+
APPROVAL_REQUIRED:
|
|
138
|
+
"approval_required",
|
|
139
|
+
});
|
|
140
|
+
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|