jac-coder 0.1.0__py3-none-any.whl
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.
- jac_coder/__init__.jac +0 -0
- jac_coder/api.jac +82 -0
- jac_coder/cli_entry.py +25 -0
- jac_coder/config.jac +36 -0
- jac_coder/context.jac +17 -0
- jac_coder/data/examples/ai_agent.md +90 -0
- jac_coder/data/examples/blog_app.md +386 -0
- jac_coder/data/examples/core_patterns.md +321 -0
- jac_coder/data/examples/todo_app.md +321 -0
- jac_coder/data/reference/ai.md +131 -0
- jac_coder/data/reference/backend.md +215 -0
- jac_coder/data/reference/frontend.md +271 -0
- jac_coder/data/reference/osp.md +229 -0
- jac_coder/data/reference/pitfalls.md +141 -0
- jac_coder/data/reference/syntax.md +159 -0
- jac_coder/data/rules/core_jac.md +559 -0
- jac_coder/data/rules/fullstack.md +362 -0
- jac_coder/data/rules/workflow.md +88 -0
- jac_coder/events.jac +110 -0
- jac_coder/impl/api.impl.jac +399 -0
- jac_coder/impl/config.impl.jac +163 -0
- jac_coder/impl/context.impl.jac +117 -0
- jac_coder/impl/mcp_manager.impl.jac +380 -0
- jac_coder/impl/memory.impl.jac +247 -0
- jac_coder/impl/nodes.impl.jac +259 -0
- jac_coder/impl/permission.impl.jac +62 -0
- jac_coder/impl/walkers.impl.jac +298 -0
- jac_coder/mcp_manager.jac +35 -0
- jac_coder/memory.jac +15 -0
- jac_coder/nodes.jac +306 -0
- jac_coder/permission.jac +19 -0
- jac_coder/serve_entry.jac +30 -0
- jac_coder/server.jac +324 -0
- jac_coder/tool/__init__.jac +17 -0
- jac_coder/tool/checked.jac +10 -0
- jac_coder/tool/delegation.jac +23 -0
- jac_coder/tool/filesystem.jac +25 -0
- jac_coder/tool/git.jac +18 -0
- jac_coder/tool/guarded.jac +23 -0
- jac_coder/tool/impl/checked.impl.jac +38 -0
- jac_coder/tool/impl/delegation.impl.jac +157 -0
- jac_coder/tool/impl/filesystem.impl.jac +781 -0
- jac_coder/tool/impl/git.impl.jac +115 -0
- jac_coder/tool/impl/guarded.impl.jac +72 -0
- jac_coder/tool/impl/jac_analyzer.impl.jac +593 -0
- jac_coder/tool/impl/jac_docs.impl.jac +136 -0
- jac_coder/tool/impl/jac_tools.impl.jac +79 -0
- jac_coder/tool/impl/mcp.impl.jac +32 -0
- jac_coder/tool/impl/preview.impl.jac +233 -0
- jac_coder/tool/impl/question.impl.jac +29 -0
- jac_coder/tool/impl/scaffold.impl.jac +231 -0
- jac_coder/tool/impl/search.impl.jac +85 -0
- jac_coder/tool/impl/shell.impl.jac +89 -0
- jac_coder/tool/impl/task.impl.jac +12 -0
- jac_coder/tool/impl/think.impl.jac +4 -0
- jac_coder/tool/impl/todo.impl.jac +58 -0
- jac_coder/tool/impl/validate.impl.jac +236 -0
- jac_coder/tool/impl/web.impl.jac +91 -0
- jac_coder/tool/jac_analyzer.jac +21 -0
- jac_coder/tool/jac_docs.jac +9 -0
- jac_coder/tool/jac_tools.jac +11 -0
- jac_coder/tool/mcp.jac +17 -0
- jac_coder/tool/preview.jac +31 -0
- jac_coder/tool/question.jac +7 -0
- jac_coder/tool/scaffold.jac +10 -0
- jac_coder/tool/search.jac +14 -0
- jac_coder/tool/shell.jac +12 -0
- jac_coder/tool/task.jac +9 -0
- jac_coder/tool/think.jac +5 -0
- jac_coder/tool/todo.jac +12 -0
- jac_coder/tool/validate.jac +11 -0
- jac_coder/tool/vision.jac +17 -0
- jac_coder/tool/web.jac +10 -0
- jac_coder/util/__init__.jac +18 -0
- jac_coder/util/colors.jac +20 -0
- jac_coder/util/impl/sandbox.impl.jac +38 -0
- jac_coder/util/impl/tool_output.impl.jac +208 -0
- jac_coder/util/sandbox.jac +8 -0
- jac_coder/util/tool_output.jac +29 -0
- jac_coder/walkers.jac +67 -0
- jac_coder-0.1.0.dist-info/METADATA +9 -0
- jac_coder-0.1.0.dist-info/RECORD +85 -0
- jac_coder-0.1.0.dist-info/WHEEL +5 -0
- jac_coder-0.1.0.dist-info/entry_points.txt +3 -0
- jac_coder-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
glob TOOL_LABELS: dict = {
|
|
2
|
+
"read": "Read",
|
|
3
|
+
"write": "Write",
|
|
4
|
+
"edit": "Edit",
|
|
5
|
+
"list": "List files",
|
|
6
|
+
"grep": "Search",
|
|
7
|
+
"glob": "Find files",
|
|
8
|
+
"bash": "Run command",
|
|
9
|
+
"web_fetch": "Fetch URL",
|
|
10
|
+
"web_search": "Web search",
|
|
11
|
+
"jac_docs": "Jac docs",
|
|
12
|
+
"jac_check": "Check",
|
|
13
|
+
"jac_run": "Run",
|
|
14
|
+
"scaffold": "Scaffold",
|
|
15
|
+
"spawn_task": "Spawn task",
|
|
16
|
+
"update_todos": "Update plan"
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _auto_close_tool(prev: dict) -> None {
|
|
21
|
+
duration_ms = int((time.time() - prev["start_time"]) * 1000);
|
|
22
|
+
if duration_ms >= 1000 {
|
|
23
|
+
timing = f"{round(duration_ms / 1000, 1)}s";
|
|
24
|
+
} else {
|
|
25
|
+
timing = f"{duration_ms}ms";
|
|
26
|
+
}
|
|
27
|
+
sys.stderr.write(f" {DIM}({timing}){RESET}\n");
|
|
28
|
+
sys.stderr.flush();
|
|
29
|
+
emit_event(
|
|
30
|
+
"tool_end",
|
|
31
|
+
{
|
|
32
|
+
"tool": prev["tool"],
|
|
33
|
+
"step": prev["step"],
|
|
34
|
+
"status": "done",
|
|
35
|
+
"duration_ms": duration_ms,
|
|
36
|
+
"result_preview": "",
|
|
37
|
+
"message": f"{prev['message']} ({timing})"
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
set_active_tool({});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
impl smart_path(path: str) -> str {
|
|
45
|
+
if not path {
|
|
46
|
+
return path;
|
|
47
|
+
}
|
|
48
|
+
sroot = get_sandbox_root();
|
|
49
|
+
if sroot and path.startswith(sroot) {
|
|
50
|
+
rel = os.path.relpath(path, sroot);
|
|
51
|
+
return rel;
|
|
52
|
+
}
|
|
53
|
+
stripped = re.sub(r'/tmp/jac-preview-[a-f0-9\-]+-prj_\d+/', '', path);
|
|
54
|
+
if stripped != path {
|
|
55
|
+
return stripped;
|
|
56
|
+
}
|
|
57
|
+
parts = path.replace("\\", "/").split("/");
|
|
58
|
+
if len(parts) > 2 {
|
|
59
|
+
return os.path.join(parts[-2], parts[-1]);
|
|
60
|
+
}
|
|
61
|
+
return path;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _clean_paths(text: str) -> str {
|
|
66
|
+
if not text {
|
|
67
|
+
return text;
|
|
68
|
+
}
|
|
69
|
+
sroot = get_sandbox_root();
|
|
70
|
+
if sroot and sroot in text {
|
|
71
|
+
text = text.replace(sroot + "/", "").replace(sroot, "");
|
|
72
|
+
}
|
|
73
|
+
text = re.sub(r'/tmp/jac-preview-[a-f0-9\-]+-prj_\d+/', '', text);
|
|
74
|
+
text = re.sub(r'/tmp/[^\s]+/([^/\s]+/[^/\s]+)', r'\1', text);
|
|
75
|
+
return text;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
impl tool_status(tool_name: str, detail: str = "") -> None {
|
|
80
|
+
prev = get_active_tool();
|
|
81
|
+
if prev {
|
|
82
|
+
_auto_close_tool(prev);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
step = next_step();
|
|
86
|
+
label = TOOL_LABELS.get(tool_name, tool_name);
|
|
87
|
+
prefix = get_agent_prefix();
|
|
88
|
+
prefix_display = f"{prefix}:" if prefix else "";
|
|
89
|
+
detail_display = _clean_paths(detail) if detail else "";
|
|
90
|
+
detail_short = detail_display[:80] + "..."
|
|
91
|
+
if len(detail_display) > 80
|
|
92
|
+
else detail_display;
|
|
93
|
+
|
|
94
|
+
if detail_short {
|
|
95
|
+
sys.stderr.write(
|
|
96
|
+
f" {DIM}{CYAN}[{prefix_display}{step}] {label}:{RESET}{DIM} {detail_short}{RESET}"
|
|
97
|
+
);
|
|
98
|
+
} else {
|
|
99
|
+
sys.stderr.write(f" {DIM}{CYAN}[{prefix_display}{step}] {label}{RESET}");
|
|
100
|
+
}
|
|
101
|
+
sys.stderr.flush();
|
|
102
|
+
|
|
103
|
+
if detail_short {
|
|
104
|
+
message = f"{label} {detail_short}";
|
|
105
|
+
} else {
|
|
106
|
+
message = label;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
# Track file modifications for turn summary
|
|
110
|
+
if tool_name in ["write", "edit"] and detail {
|
|
111
|
+
track_file(detail_display);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
set_active_tool(
|
|
115
|
+
{
|
|
116
|
+
"tool": tool_name,
|
|
117
|
+
"detail": detail_short or tool_name,
|
|
118
|
+
"step": step,
|
|
119
|
+
"message": message,
|
|
120
|
+
"start_time": time.time()
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
emit_event(
|
|
125
|
+
"tool_start",
|
|
126
|
+
{
|
|
127
|
+
"tool": tool_name,
|
|
128
|
+
"detail": detail_short or tool_name,
|
|
129
|
+
"step": step,
|
|
130
|
+
"message": message
|
|
131
|
+
}
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
impl tool_end(result_preview: str = "", error: bool = False) -> None {
|
|
137
|
+
active = get_active_tool();
|
|
138
|
+
if not active {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
duration_ms = int((time.time() - active["start_time"]) * 1000);
|
|
142
|
+
status = "error" if error else "done";
|
|
143
|
+
preview = result_preview[:80] + "..."
|
|
144
|
+
if len(result_preview) > 80
|
|
145
|
+
else result_preview;
|
|
146
|
+
|
|
147
|
+
if error {
|
|
148
|
+
track_error();
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
# Format timing
|
|
152
|
+
if duration_ms >= 1000 {
|
|
153
|
+
timing = f"{round(duration_ms / 1000, 1)}s";
|
|
154
|
+
} else {
|
|
155
|
+
timing = f"{duration_ms}ms";
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if preview {
|
|
159
|
+
sys.stderr.write(f" {DIM}{preview}{RESET} {DIM}({timing}){RESET}\n");
|
|
160
|
+
} else {
|
|
161
|
+
sys.stderr.write(f" {DIM}({timing}){RESET}\n");
|
|
162
|
+
}
|
|
163
|
+
sys.stderr.flush();
|
|
164
|
+
|
|
165
|
+
emit_event(
|
|
166
|
+
"tool_end",
|
|
167
|
+
{
|
|
168
|
+
"tool": active["tool"],
|
|
169
|
+
"step": active["step"],
|
|
170
|
+
"status": status,
|
|
171
|
+
"duration_ms": duration_ms,
|
|
172
|
+
"result_preview": preview,
|
|
173
|
+
"message": f"{active['message']} ({timing})"
|
|
174
|
+
}
|
|
175
|
+
);
|
|
176
|
+
set_active_tool({});
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
impl truncate_output(
|
|
181
|
+
text: str, max_lines: int = MAX_LINES, max_chars: int = MAX_CHARS
|
|
182
|
+
) -> tuple {
|
|
183
|
+
lines = text.split("\n");
|
|
184
|
+
truncated = False;
|
|
185
|
+
|
|
186
|
+
if len(lines) > max_lines {
|
|
187
|
+
half = max_lines // 2;
|
|
188
|
+
lines = lines[:half] + [
|
|
189
|
+
"",
|
|
190
|
+
f"... ({len(lines) - max_lines} lines omitted) ...",
|
|
191
|
+
""
|
|
192
|
+
] + lines[-half:];
|
|
193
|
+
truncated = True;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
result = "\n".join(lines);
|
|
197
|
+
|
|
198
|
+
if len(result) > max_chars {
|
|
199
|
+
result = result[:max_chars];
|
|
200
|
+
truncated = True;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
if truncated {
|
|
204
|
+
result = result + "\n\n(output truncated)";
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
return (result, truncated);
|
|
208
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import os;
|
|
2
|
+
import re;
|
|
3
|
+
import sys;
|
|
4
|
+
import time;
|
|
5
|
+
|
|
6
|
+
import from jac_coder.util.colors { DIM, CYAN, RESET }
|
|
7
|
+
import from jac_coder.util.sandbox { get_sandbox_root }
|
|
8
|
+
import from jac_coder.events {
|
|
9
|
+
emit_event,
|
|
10
|
+
next_step,
|
|
11
|
+
get_active_tool,
|
|
12
|
+
set_active_tool,
|
|
13
|
+
track_file,
|
|
14
|
+
track_error,
|
|
15
|
+
get_agent_prefix
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
glob MAX_LINES: int = 2000;
|
|
19
|
+
glob MAX_CHARS: int = 50000;
|
|
20
|
+
|
|
21
|
+
def tool_status(tool_name: str, detail: str = "") -> None;
|
|
22
|
+
|
|
23
|
+
def tool_end(result_preview: str = "", error: bool = False) -> None;
|
|
24
|
+
|
|
25
|
+
def smart_path(path: str) -> str;
|
|
26
|
+
|
|
27
|
+
def truncate_output(
|
|
28
|
+
text: str, max_lines: int = MAX_LINES, max_chars: int = MAX_CHARS
|
|
29
|
+
) -> tuple;
|
jac_coder/walkers.jac
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import from http { HTTPMethod }
|
|
2
|
+
import from datetime { datetime }
|
|
3
|
+
import from jac_coder.util.tool_output { tool_end }
|
|
4
|
+
import from jac_coder.util.sandbox { set_sandbox_root }
|
|
5
|
+
import from jac_coder.config { llm, get_config }
|
|
6
|
+
import from jaclang.runtimelib.builtin { restspec }
|
|
7
|
+
import from jac_coder.context { build_context, ContextConfig }
|
|
8
|
+
import from jac_coder.events { reset_steps, start_turn, emit_turn_summary, emit_event }
|
|
9
|
+
import from byllm.types { StreamEvent }
|
|
10
|
+
import from jac_coder.memory {
|
|
11
|
+
find_or_create_memory,
|
|
12
|
+
_init_memory,
|
|
13
|
+
update_memory_from_session
|
|
14
|
+
}
|
|
15
|
+
import from jac_coder.nodes { Session, MainAgent }
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def ensure_main_agent() -> MainAgent;
|
|
19
|
+
def _find_session(session_id: str) -> Session | None;
|
|
20
|
+
def _persist_response(
|
|
21
|
+
session_id: str,
|
|
22
|
+
response: str,
|
|
23
|
+
agent_mode: str,
|
|
24
|
+
tools_used: list[str] = [],
|
|
25
|
+
files_modified: list[str] = []
|
|
26
|
+
) -> None;
|
|
27
|
+
def _respond_and_persist(agent: MainAgent, ctx: interact) -> None;
|
|
28
|
+
def _consume_llm_stream(event_stream: Any) -> dict;
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
walker:pub new_session {
|
|
32
|
+
has title: str = "New Session";
|
|
33
|
+
has directory: str = "";
|
|
34
|
+
|
|
35
|
+
can create with Root entry;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@restspec(method=HTTPMethod.GET)
|
|
40
|
+
walker:pub list_sessions {
|
|
41
|
+
can list with Root entry;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
walker:pub get_session {
|
|
46
|
+
has session_id: str;
|
|
47
|
+
|
|
48
|
+
can fetch with Root entry;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
walker:pub close_session {
|
|
52
|
+
has session_id: str;
|
|
53
|
+
|
|
54
|
+
can close with Root entry;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
walker:pub interact {
|
|
59
|
+
has message: str;
|
|
60
|
+
has session_id: str;
|
|
61
|
+
has chat_history: list[dict] = [];
|
|
62
|
+
has agent_context: str = "";
|
|
63
|
+
|
|
64
|
+
can init_session with Root entry;
|
|
65
|
+
can enter_session with Session entry;
|
|
66
|
+
can respond with MainAgent entry;
|
|
67
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
jac_coder/__init__.jac,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
jac_coder/api.jac,sha256=7yABX326Zpr2elxNoa4K5WtJ5Du7alku0m0Hi0kwFz8,2129
|
|
3
|
+
jac_coder/cli_entry.py,sha256=hANjqAz6dO5gBWRnGF53cmYsfODqnLYmt1SG4cGAjqg,674
|
|
4
|
+
jac_coder/config.jac,sha256=0jJxv1QZgxQZdUtFXgsnpRo3USQrUP6RWFyMv29jZaI,858
|
|
5
|
+
jac_coder/context.jac,sha256=fMVE4sEsjqrgl36dygI0MaVRf42t9SjQgr5syuVVGlo,423
|
|
6
|
+
jac_coder/events.jac,sha256=_pclIDFN3UFk8HD27Csah-ANWRudya74NBG-kMyFgmk,2412
|
|
7
|
+
jac_coder/mcp_manager.jac,sha256=ZOREqaNUPIyKitiMFd7CATkFPaWRAwbIRXnkxAINybI,1151
|
|
8
|
+
jac_coder/memory.jac,sha256=PmsUq3Uowvt9QYSqQZHtYCWFTe9J3c0v80NSG_yVavE,440
|
|
9
|
+
jac_coder/nodes.jac,sha256=k46tMPR0AoayQyKZEIXCLDd5uSkXGxvp27zki70ACXc,9926
|
|
10
|
+
jac_coder/permission.jac,sha256=qPGYe4eEv5Ahey9Hd4nJ6JDkQ-enkMDIylmrva5rKXo,492
|
|
11
|
+
jac_coder/serve_entry.jac,sha256=ErhRPjByrlnLkx7W3M5K14g5DTHnZVLo3T-J5VHRTSU,913
|
|
12
|
+
jac_coder/server.jac,sha256=4tefSbkQTy1z7NvQrgX_y_CZsVQscz1YJBuLdIUqmxk,11707
|
|
13
|
+
jac_coder/walkers.jac,sha256=KiuS0WxV5xQO2MYvzunAHrVwx9Tt1UAlyOjl7y65Kf8,1659
|
|
14
|
+
jac_coder/data/examples/ai_agent.md,sha256=Uv9IXoptYXnJAUVKDygQQZfVR079RFR8LYpfQ6-aJJs,2717
|
|
15
|
+
jac_coder/data/examples/blog_app.md,sha256=SH7MwBtfGwVjg2yiC-RGUUtNBLjjn1vtrbWne1hOCxo,11980
|
|
16
|
+
jac_coder/data/examples/core_patterns.md,sha256=jQofpR_gs2AU6uqLXjEe6sN9pOlnsPiwVo6Tey9JNYw,6339
|
|
17
|
+
jac_coder/data/examples/todo_app.md,sha256=aZ9v83vWK3_sqQSGdG9D9-CCQnIV3UrvSGVmKxzvaBA,9082
|
|
18
|
+
jac_coder/data/reference/ai.md,sha256=TpOFihKhem__OrILWDOdy4T9tfMQ7vii9TgqiKv2BlQ,3124
|
|
19
|
+
jac_coder/data/reference/backend.md,sha256=MT_biej9DzywyhQ4bKR8osydlBcWjnkl4UQKfISeaPw,5062
|
|
20
|
+
jac_coder/data/reference/frontend.md,sha256=7yvPldD0DDpXHw0ibw2yzY6z4NZASdlAl1ZUUWvv5cY,6886
|
|
21
|
+
jac_coder/data/reference/osp.md,sha256=JRMT8nqguup7wsuFp5Ig4JwqhjYHtw16pwX-Q5kV4eY,4998
|
|
22
|
+
jac_coder/data/reference/pitfalls.md,sha256=ovW5U_nCcIFrazxRZVZqUfSUM6Yk_cTYAPfX5cyPNIo,3814
|
|
23
|
+
jac_coder/data/reference/syntax.md,sha256=anKQy0qZlHQGTOZ3yKZ8Lq4GOcPrVzggGHRQ25IjsMU,3496
|
|
24
|
+
jac_coder/data/rules/core_jac.md,sha256=3X30Fz1gwMlK3w8czvatDEKEBeVjH6pWdp_yoJYXqM8,9659
|
|
25
|
+
jac_coder/data/rules/fullstack.md,sha256=5CK0roIY-QJH74uhBfvcYTDoLlVcUgKSuvDfY6bi3sY,10229
|
|
26
|
+
jac_coder/data/rules/workflow.md,sha256=DUyh64PADKGajW_4Zcw_ryWPmCzaotYI8STDHzhfR1g,3184
|
|
27
|
+
jac_coder/impl/api.impl.jac,sha256=a5IT3zYNOnDuhglSSo8u2xLdtNfKQ3BxnBqp0lsD2do,12502
|
|
28
|
+
jac_coder/impl/config.impl.jac,sha256=J2W0kw9bx_9EU9QgPAcvHcyxMbU_12xkrSx_dpuJFmM,4625
|
|
29
|
+
jac_coder/impl/context.impl.jac,sha256=Usf4GL__XczRhRRWnpMcjH96144ixHPdfp9SYz3nQ_g,3230
|
|
30
|
+
jac_coder/impl/mcp_manager.impl.jac,sha256=vsiptJub1YCysb29GkAb8A_hgZtwHQo99pwa8l8noz8,13363
|
|
31
|
+
jac_coder/impl/memory.impl.jac,sha256=3tZovNaZGdKCQZeSsNgrROWn1XXvwwcY2GnrqYzQtLM,7494
|
|
32
|
+
jac_coder/impl/nodes.impl.jac,sha256=bRJBOwgFLpTSC2INuv_aXPxDxtf8NgOrF0DWLZenPjw,14963
|
|
33
|
+
jac_coder/impl/permission.impl.jac,sha256=J8bz7Nt4bZ8cIXPUO5WZOeDZfFF65xul0QBT7Mk1Kqw,1671
|
|
34
|
+
jac_coder/impl/walkers.impl.jac,sha256=1gS9_AztWTLVmAe2DNuiIzefP_7DViIWqY1HroJazuc,9389
|
|
35
|
+
jac_coder/tool/__init__.jac,sha256=DtBEANWm0S6ukBvW-C95WpjRO1IK6H52W_kOP0kHbao,1060
|
|
36
|
+
jac_coder/tool/checked.jac,sha256=3gCPgojcLDC7mZHNcX00twAuHh6eEp15zu4dTJ6wc6Y,324
|
|
37
|
+
jac_coder/tool/delegation.jac,sha256=EYdwkaf02sLQXO7E10ZBGeKEoRHvMNt5KK9DzjuHlWI,1005
|
|
38
|
+
jac_coder/tool/filesystem.jac,sha256=Y_dyjlg5IlhZRwxnF-xQU_t-BUPI0mC1A2X7-hD5-mU,729
|
|
39
|
+
jac_coder/tool/git.jac,sha256=qb5y4KAFk2awqDYSjj5m7upsVLWEPJ0ahdcF1__cZoc,465
|
|
40
|
+
jac_coder/tool/guarded.jac,sha256=fE-2CI-gg2NYpaFG3Rx_ekP7yHMI55ypiMcXq-M9vyE,771
|
|
41
|
+
jac_coder/tool/jac_analyzer.jac,sha256=thzcm7EeRlGv1GCbqnijbLY6jGofZD2py3VcylSv-Uk,1396
|
|
42
|
+
jac_coder/tool/jac_docs.jac,sha256=b9CK_ohhqqUKEjHMoLGXseTtAVzGjZgtN3vXz0NbgjQ,251
|
|
43
|
+
jac_coder/tool/jac_tools.jac,sha256=61sJwaZ46RVutRgIcgwyYKYun7t6u7dI-EMs6EK3Uso,289
|
|
44
|
+
jac_coder/tool/mcp.jac,sha256=gQ5ciB4d-9-DMDMMOrkVMjPbeyp9HZ5GiV_E9kwu-9A,846
|
|
45
|
+
jac_coder/tool/preview.jac,sha256=Ydha9LABxFSdXCLDqPzIStmkXI7KHcDbJjL-CdDBRuU,1091
|
|
46
|
+
jac_coder/tool/question.jac,sha256=VrMvnPbrWzdcorRGfAiCEtPyXoRLDasS6PKezBQetKg,156
|
|
47
|
+
jac_coder/tool/scaffold.jac,sha256=cfKahRPxLpx5FqnclFW0mGkSAKTZj4nAQhaVskgBkzs,330
|
|
48
|
+
jac_coder/tool/search.jac,sha256=KiznOit1wPUi3orPeM_6XP9h3Lkwz9xxwF80kdrt8FE,420
|
|
49
|
+
jac_coder/tool/shell.jac,sha256=2dnbe9qo8z6Gz9IBdbnmOP-JiUArP56gIGXhhqT4Pbg,339
|
|
50
|
+
jac_coder/tool/task.jac,sha256=odWexlrBDC2QKS7t9GmoL9vySRROtRtv0Gk_iMphyds,251
|
|
51
|
+
jac_coder/tool/think.jac,sha256=IELBdf-cx0HErd3EDQVBv-6adpNypbBB5Wzj8l1zIM0,130
|
|
52
|
+
jac_coder/tool/todo.jac,sha256=lUPCi7EO9tPnLyJrQK2PASXpo0KnM3KpW2pI32rgmvg,262
|
|
53
|
+
jac_coder/tool/validate.jac,sha256=QRdKxV9g4-a2Rc944FGjxUBXnZKei_KMNCHB22SoFCs,639
|
|
54
|
+
jac_coder/tool/vision.jac,sha256=mSH9D7iu-54g2vsjNu53LtaZBV7O5dOb6rKcyawdCsc,643
|
|
55
|
+
jac_coder/tool/web.jac,sha256=V-_w8rVnyYu4YoYiV4aeSLLNGpIOnlfE1ts0xrZXFG4,266
|
|
56
|
+
jac_coder/tool/impl/checked.impl.jac,sha256=Yfl82_aeDMVauPidJmuuwxDM3ZH_kUpASl18cQv4TCk,1178
|
|
57
|
+
jac_coder/tool/impl/delegation.impl.jac,sha256=PwpMxeKcFSGU2VSgLl2YtVwLrGeJR3E0Hg-5L2N9QrQ,4649
|
|
58
|
+
jac_coder/tool/impl/filesystem.impl.jac,sha256=IFkbofZ5atB0M_ePip1D_4UKTrueG91hq2u-MB0Eg78,27200
|
|
59
|
+
jac_coder/tool/impl/git.impl.jac,sha256=PE28YoHLUtinaGTrB3KM4YOn1VfATt8i5VnHjL_HGNI,3416
|
|
60
|
+
jac_coder/tool/impl/guarded.impl.jac,sha256=0h41c4e9ipRi96y40v9TOr-2dAtLce6cv0QCMzfun08,2024
|
|
61
|
+
jac_coder/tool/impl/jac_analyzer.impl.jac,sha256=dF-dgmWCT9G7zwdAa-YZnXlzjT2VpX7gJlsD5qOdji4,17592
|
|
62
|
+
jac_coder/tool/impl/jac_docs.impl.jac,sha256=kqBzeH_-t-Ps7OYiQcKINmIoZufeO06_37Dz5AEAEZ4,4106
|
|
63
|
+
jac_coder/tool/impl/jac_tools.impl.jac,sha256=N3MxCtcLAf6TTtU6Bbnw5eV89JoSjdNMiyxW9VOPC3A,2281
|
|
64
|
+
jac_coder/tool/impl/mcp.impl.jac,sha256=Jr9beV-LcDPcsXk7wgdVJmalKbApVLMCwmd7qK70ZQo,1024
|
|
65
|
+
jac_coder/tool/impl/preview.impl.jac,sha256=vwEdK7XyliCnGobJhairHIX3EKNZ-yBDObxCofDoDIw,8777
|
|
66
|
+
jac_coder/tool/impl/question.impl.jac,sha256=2qLBQe_egJUILRM1ZqT6k-FoORzfIQNbrm9ukkrGOUQ,863
|
|
67
|
+
jac_coder/tool/impl/scaffold.impl.jac,sha256=qESaoM6Dv88L51a07vkfr9M7cUZBoMXP3wzzRb09zUI,21423
|
|
68
|
+
jac_coder/tool/impl/search.impl.jac,sha256=_u9JxvRhiS6rTc87TZpKKSQjx6XMkRI33D7UcPZj5Us,2345
|
|
69
|
+
jac_coder/tool/impl/shell.impl.jac,sha256=z97oDZy_t8Oo2o0gdgZFszPOf69LMxZeVco8nNDndtQ,2586
|
|
70
|
+
jac_coder/tool/impl/task.impl.jac,sha256=TtGZRHD1G_btvgHIMoaQ7R16UDmbFpquFmomVbzhrh0,436
|
|
71
|
+
jac_coder/tool/impl/think.impl.jac,sha256=Vpl10LGv5wVjFotOMLgQOWK5zekDukcdDk1vQW6jvRE,138
|
|
72
|
+
jac_coder/tool/impl/todo.impl.jac,sha256=vaBjaG1ZJ4i4I5bvQb7o81F_nxyvnrYLQIhPaY5rqU8,1528
|
|
73
|
+
jac_coder/tool/impl/validate.impl.jac,sha256=j8aMOZ2DVglsWyCbY8kypEPapZ-joz1y2TOgOv5kxGo,8005
|
|
74
|
+
jac_coder/tool/impl/web.impl.jac,sha256=p5njkd9cKU9pjyLw6kprNjpF3SX4jSm1O3zRJ_lMvys,2761
|
|
75
|
+
jac_coder/util/__init__.jac,sha256=AFxFVI0UU_YSBqLZNlezORyrh1xdi1VnWJaoLNo7DQE,261
|
|
76
|
+
jac_coder/util/colors.jac,sha256=ThftCTrFpEw-rcfDY6CQNPne57CV6QLNebIB0-UfeXY,485
|
|
77
|
+
jac_coder/util/sandbox.jac,sha256=fAxriAvUfhuM0I2RCHK2uKODb20CDVaf8HNXHjYBwpI,181
|
|
78
|
+
jac_coder/util/tool_output.jac,sha256=0eaybkCNOOebb6kfmmrKu-h-WKwf5C2eNu-McnTcNaI,646
|
|
79
|
+
jac_coder/util/impl/sandbox.impl.jac,sha256=YZQHMAmxvk1LfvSjAROQw5e6rhG4LROdPHqzwNkhhUw,822
|
|
80
|
+
jac_coder/util/impl/tool_output.impl.jac,sha256=9_xeh3aIGrI75BwpIpAqamC6OVbqQFBO8SX-Q0mAVOw,5229
|
|
81
|
+
jac_coder-0.1.0.dist-info/METADATA,sha256=PUyBBXTxsTzh1vYmf61F7UeYttWBPiiFXddiBNtbFoo,246
|
|
82
|
+
jac_coder-0.1.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
83
|
+
jac_coder-0.1.0.dist-info/entry_points.txt,sha256=3qZxPMT2xOdABJHy1tCXslDNE_Th6B_mi48T6lpvE4o,101
|
|
84
|
+
jac_coder-0.1.0.dist-info/top_level.txt,sha256=2uM9UgP2leB3zQ0GW5xdLgw_rJ7Nra7TAbyaGjPknLE,10
|
|
85
|
+
jac_coder-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
jac_coder
|