mindslice-forge 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.
- mindslice_forge/__init__.py +12 -0
- mindslice_forge/__main__.py +5 -0
- mindslice_forge/checkpoint.py +106 -0
- mindslice_forge/cli.py +85 -0
- mindslice_forge/engine.py +91 -0
- mindslice_forge/harness.py +81 -0
- mindslice_forge/lookup.py +91 -0
- mindslice_forge/pipeline.py +419 -0
- mindslice_forge/profile.py +83 -0
- mindslice_forge/prompts/card-format.md +76 -0
- mindslice_forge/prompts/extract.md +100 -0
- mindslice_forge/prompts/finalize.md +69 -0
- mindslice_forge/prompts/plan.md +145 -0
- mindslice_forge/prompts/probe.md +15 -0
- mindslice_forge/prompts/repair.md +27 -0
- mindslice_forge/split.py +137 -0
- mindslice_forge/state.py +44 -0
- mindslice_forge-0.1.0.dist-info/METADATA +275 -0
- mindslice_forge-0.1.0.dist-info/RECORD +23 -0
- mindslice_forge-0.1.0.dist-info/WHEEL +5 -0
- mindslice_forge-0.1.0.dist-info/entry_points.txt +2 -0
- mindslice_forge-0.1.0.dist-info/licenses/LICENSE +202 -0
- mindslice_forge-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mindslice-forge
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Turn documents into a MindSlice workspace by driving an agent harness (Python stdlib only).
|
|
5
|
+
Author: pancerZH
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/pancerZH/MindSlice-forge
|
|
8
|
+
Project-URL: Issues, https://github.com/pancerZH/MindSlice-forge/issues
|
|
9
|
+
Project-URL: MindSlice, https://github.com/pancerZH/MindSlice
|
|
10
|
+
Keywords: llm,agents,memory,markdown,mindslice
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Topic :: Text Processing :: Markup :: Markdown
|
|
16
|
+
Requires-Python: >=3.12
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
License-File: LICENSE
|
|
19
|
+
Dynamic: license-file
|
|
20
|
+
|
|
21
|
+
# mindslice-forge
|
|
22
|
+
|
|
23
|
+
Turn documents into a [MindSlice](https://github.com/pancerZH/MindSlice) workspace.
|
|
24
|
+
|
|
25
|
+
MindSlice is the memory engine. The forge is the tool that fills it: it takes one long document, a
|
|
26
|
+
folder of many files, or a mixture, drives the agent harness you choose through the conversion,
|
|
27
|
+
and checks every result with the `mindslice` command. Sources of any size work,
|
|
28
|
+
because they are read in chunks and each chunk is handled by a fresh agent session that continues
|
|
29
|
+
the work of the ones before it.
|
|
30
|
+
|
|
31
|
+
The forge itself is small on purpose. It keeps the inventory, the state, the checkpoints and the
|
|
32
|
+
checks; everything that needs understanding of the text is done by the agent, following the
|
|
33
|
+
templates in [`mindslice_forge/prompts/`](https://github.com/pancerZH/MindSlice-forge/tree/main/mindslice_forge/prompts).
|
|
34
|
+
|
|
35
|
+
Python 3.12+, standard library only. Needs `mindslice` 0.1.0 or newer, `git`, and an agent harness
|
|
36
|
+
that can run a session unattended from the command line.
|
|
37
|
+
|
|
38
|
+
## When to use Forge
|
|
39
|
+
|
|
40
|
+
Use Forge when you want an agent to distill source documents into topic cards. MindSlice itself
|
|
41
|
+
handles the other starting points without Forge:
|
|
42
|
+
|
|
43
|
+
- `mindslice init <workspace>` creates empty memory for learning through conversation.
|
|
44
|
+
- `mindslice -w <workspace> ...` opens an existing workspace directly.
|
|
45
|
+
- `mindslice -w <workspace> mount <directory>` mounts a `.slice` or a plain Markdown notes folder
|
|
46
|
+
read-only, without LLM conversion.
|
|
47
|
+
|
|
48
|
+
MindSlice's [setup skill](https://github.com/pancerZH/MindSlice/blob/main/skills/mindslice-setup/SKILL.md)
|
|
49
|
+
guides onboarding; its [builder skill](https://github.com/pancerZH/MindSlice/blob/main/skills/slice-builder/SKILL.md)
|
|
50
|
+
uses Forge for conversion and connects the result. Forge is optional for MindSlice users; the
|
|
51
|
+
engine does not call an LLM or require Forge as a runtime dependency.
|
|
52
|
+
|
|
53
|
+
## Install
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pipx install mindslice-forge # or: uv tool install mindslice-forge
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Install the MindSlice engine the same way (`pipx install mindslice`): Forge and the agent sessions
|
|
60
|
+
it starts call the `mindslice` command by name, so both must be on `PATH`. Make sure the harness
|
|
61
|
+
you will use is authenticated and its model is available.
|
|
62
|
+
|
|
63
|
+
*(For local development from source: `git clone https://github.com/pancerZH/MindSlice-forge.git && cd MindSlice-forge && pipx install -e .`.)*
|
|
64
|
+
|
|
65
|
+
## Use
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
HARNESS='...' # the command that runs one agent session: see "The harness command" below
|
|
69
|
+
mindslice-forge novel.txt \
|
|
70
|
+
--harness-cmd "$HARNESS" \
|
|
71
|
+
--dict wiki-summary.txt \
|
|
72
|
+
--prompt "Extract the world and its background for solo role-play. Record how a thing changes over time as several cards that extend one another, not as one crowded card." \
|
|
73
|
+
--sample 2 \
|
|
74
|
+
-o ./novel.workspace
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
| Argument | Meaning |
|
|
78
|
+
| --- | --- |
|
|
79
|
+
| `SOURCE...` | Documents or folders to convert. Text files in UTF-8, GB18030 or UTF-16; other files are listed and left out. |
|
|
80
|
+
| `--dict PATH` | A reference frame: an outline, glossary or encyclopedia page about the sources. It shapes names and structure and is never a source of facts. Repeatable. |
|
|
81
|
+
| `--prompt TEXT_OR_FILE` | What to extract and how. |
|
|
82
|
+
| `-o, --output DIR` | The workspace to create. Default: `./<first source name>.workspace`. |
|
|
83
|
+
| `--sample N` | Process only the first N chunks, to try a prompt before a long run. |
|
|
84
|
+
| `--chunk-size CHARS` | Target size of a chunk. Default 100000 characters. |
|
|
85
|
+
| `--harness-cmd COMMAND` | The command line that runs one agent session; see [The harness command](#the-harness-command). Needed for everything except `--dry-run`. |
|
|
86
|
+
| `--from STAGE` | Redo the build from `plan`, `split`, `extract` or `finalize`. |
|
|
87
|
+
| `--dry-run` | Show the inventory, the directories a session must reach and what would run. Calls no agent and writes nothing. |
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
mindslice-forge ./project-docs ./adr --harness-cmd "$HARNESS" \
|
|
91
|
+
--prompt "Rules, architecture and operating procedures for new engineers."
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**Running the same command again continues an unfinished build.** A typical session:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
mindslice-forge novel.txt --harness-cmd "$HARNESS" --prompt prompt.md --sample 2 # try two chunks
|
|
98
|
+
git -C novel.workspace log -p # see what each chunk produced
|
|
99
|
+
# edit prompt.md
|
|
100
|
+
mindslice-forge novel.txt --harness-cmd "$HARNESS" --prompt prompt.md --sample 2 --from extract # extract again
|
|
101
|
+
mindslice-forge novel.txt --harness-cmd "$HARNESS" --prompt prompt.md # satisfied: run the rest
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
If the sources, the dict, the prompt or the chunk size change after a build has started, the forge
|
|
105
|
+
refuses to continue silently: say which stage to redo with `--from`, or choose another output.
|
|
106
|
+
|
|
107
|
+
## The harness command
|
|
108
|
+
|
|
109
|
+
Forge knows no agent product. You give it the command line that runs **one agent session** of
|
|
110
|
+
the harness you use, with its model and options, and Forge runs that command once per step: from
|
|
111
|
+
the forge directory, with no terminal attached, after filling in the placeholders `{message}`
|
|
112
|
+
(one line telling the agent to read the prompt file and do what it says), `{prompt_file}` and
|
|
113
|
+
`{workdir}`. Do not quote the placeholders. The command must:
|
|
114
|
+
|
|
115
|
+
- contain `{message}` or `{prompt_file}`, so that the agent receives its task;
|
|
116
|
+
- name files and directories by absolute paths, as it does not run from your directory;
|
|
117
|
+
- end when the task is done, with exit status 0 on success;
|
|
118
|
+
- never wait for an answer: no questions, and no permission prompts for reading and writing
|
|
119
|
+
files or running shell commands;
|
|
120
|
+
- let the agent write in the workspace and the forge directory and read the sources and every
|
|
121
|
+
`--dict` (`--dry-run` lists these directories);
|
|
122
|
+
- give the agent's shell a `PATH` with the `mindslice` command.
|
|
123
|
+
|
|
124
|
+
`mindslice-forge --help` prints the same list. Take the options from your harness's own help:
|
|
125
|
+
look for its non-interactive mode (often called print, exec or headless), the option that
|
|
126
|
+
approves tool use without asking, the option for the model, and, if it limits file access, the
|
|
127
|
+
option that grants directories. As an illustration only, this is such a command for Antigravity's
|
|
128
|
+
`agy`; other harnesses, and other versions of this one, have their own options:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
HARNESS='agy --print={message} --dangerously-skip-permissions --disable-slash-commands --output-format stream-json \
|
|
132
|
+
--model <model> --add-dir /abs/novel.workspace --add-dir /abs/sources'
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**A new command is checked before it is used.** Before the first step with a command, one short
|
|
136
|
+
session has to run `mindslice --version`, read a source file and write a file in the workspace.
|
|
137
|
+
If it cannot, the build stops there, within seconds or minutes, and says which requirement
|
|
138
|
+
failed and how the session's log ends. The command that passed is recorded in the forge
|
|
139
|
+
directory; changing the command, for example to another model, checks it again.
|
|
140
|
+
|
|
141
|
+
## One document or many
|
|
142
|
+
|
|
143
|
+
Files and chunks are units of reading, nothing more. They decide neither the slices nor the cards.
|
|
144
|
+
|
|
145
|
+
- **A folder** is read recursively. Hidden files and folders are ignored; files that are not text
|
|
146
|
+
(images, PDF, Word) are listed in the inventory and left out, so convert those to text first.
|
|
147
|
+
- **Small files** are kept whole and share a chunk; **a large file** is cut at its own chapters or
|
|
148
|
+
sections. The agent decides the grouping and the reading order when it plans: related files
|
|
149
|
+
together, what the rest builds on first. It can leave out a whole file, such as generated
|
|
150
|
+
output or a copy, and must give the reason.
|
|
151
|
+
- **Everything is accounted for.** Every line of every text file ends up in exactly one chunk or
|
|
152
|
+
in a skipped range with a reason; the forge checks this before any card is written.
|
|
153
|
+
- **Cards follow topics.** Several files can feed one card and one file can feed many. Where files
|
|
154
|
+
disagree, the later one does not win by being read later: the cards record what each statement
|
|
155
|
+
applies to, and unresolved disagreements are listed in the report.
|
|
156
|
+
- If everything fits in one chunk, no splitting happens and one session reads it all.
|
|
157
|
+
|
|
158
|
+
## How it works
|
|
159
|
+
|
|
160
|
+
| Stage | Who | What happens |
|
|
161
|
+
| --- | --- | --- |
|
|
162
|
+
| profile | forge | Lists the sources with their encoding, line count and size. |
|
|
163
|
+
| plan | agent, one session | Studies the structure of the documents and how the files relate, reads the dict, writes the build plan (slices, folders, card paths, reading order, how change over time is recorded), creates the slices, and writes a splitter program if the sources do not fit in one chunk. |
|
|
164
|
+
| split | forge | Runs the splitter and checks that every source line is in exactly one chunk or in a declared skipped range, and that no chunk is too large or has lost text. Problems go back to the agent. |
|
|
165
|
+
| extract | agent, one session per chunk, in order | Is told which files and lines the chunk holds, reads it in full, searches the workspace for what already exists, writes or extends cards, and leaves a ledger and a note for the next session. |
|
|
166
|
+
| finalize | agent, one session | Writes each slice's overview, clears remaining problems, tries retrieval questions, and writes the report. |
|
|
167
|
+
|
|
168
|
+
After every agent session the forge runs `mindslice validate`. Errors, and fixable warnings on the
|
|
169
|
+
cards that session touched, go to a repair session (at most `--max-repairs`). Errors that survive
|
|
170
|
+
stop the build; warnings do not, and are listed in the report. A session that fails or times out
|
|
171
|
+
is rolled back and retried.
|
|
172
|
+
|
|
173
|
+
**Search before creating cards is a required check.** The extract and finalize prompts provide a
|
|
174
|
+
`python /path/to/mindslice_forge/lookup.py WORKSPACE "name"` command. It searches the workspace
|
|
175
|
+
through `mindslice search --json` and records successful searches in the forge directory's
|
|
176
|
+
`lookups.jsonl`. Search each name separately. Every new card must have a title or alias covered
|
|
177
|
+
by a lookup from that step or its repairs: the whole query occurs in the title/alias or vice
|
|
178
|
+
versa, ignoring case and respecting Latin word boundaries. A base name can cover period cards.
|
|
179
|
+
Older steps and failed attempts do not count; edits to existing cards and slice overviews are
|
|
180
|
+
exempt. Missing lookups are errors that stop the build if repairs cannot resolve them.
|
|
181
|
+
|
|
182
|
+
Repairs must search the missing names, read matches, and merge duplicate cards into the one that
|
|
183
|
+
already existed, preserving facts and updating links. This check verifies search coverage at the
|
|
184
|
+
end of the step; deciding whether two cards describe the same thing remains the agent's job.
|
|
185
|
+
|
|
186
|
+
## Output
|
|
187
|
+
|
|
188
|
+
```text
|
|
189
|
+
novel.workspace/ a MindSlice workspace, ready for `mindslice -w novel.workspace ...`
|
|
190
|
+
├── mounts.toml, overlay/, staging/
|
|
191
|
+
├── slices/<name>.slice/ the cards, mounted
|
|
192
|
+
└── .git/ one commit per finished chunk: the checkpoints (slices and mounts only)
|
|
193
|
+
novel.workspace.forge/ build state and evidence; keep it for resume and review
|
|
194
|
+
├── state.json, harness.json progress, and the harness command that passed its check
|
|
195
|
+
├── profile.md, plan.md, split.py, report.md
|
|
196
|
+
├── chunks/ the chunk files and manifest.json
|
|
197
|
+
├── ledger/, handoff/ per chunk: what was recorded, and the note for the next session
|
|
198
|
+
├── lookups.jsonl successful name searches
|
|
199
|
+
└── prompts/, logs/ every prompt as it was sent, and each session's output
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
The forge directory lives next to the workspace so that workspace backups do not carry a copy of
|
|
203
|
+
the sources.
|
|
204
|
+
|
|
205
|
+
## Connect the result to MindSlice
|
|
206
|
+
|
|
207
|
+
**For a new workspace**, pass the intended workspace path to Forge with `-o`. Forge initializes
|
|
208
|
+
it and mounts the generated slices; do not run `mindslice init` there first. After checking the
|
|
209
|
+
report, validation and representative facts, use `mindslice -w <output> ...` or connect your
|
|
210
|
+
agent's MCP server to that workspace.
|
|
211
|
+
|
|
212
|
+
A connected workspace can still be built further: run the same command to continue a sample, or
|
|
213
|
+
use `--from` to redo a stage. What the agent has learned in the meantime (`overlay/`, `staging/`
|
|
214
|
+
and the engine's `.history/`) is kept out of the checkpoints, so no rerun, retry or rollback
|
|
215
|
+
touches it. If the slices or the mount table were changed outside the forge, by `mindslice bake`,
|
|
216
|
+
`mount` or `unmount` or by hand, the forge stops and lists the changes instead of discarding
|
|
217
|
+
them; build into another output and mount its slices. Do not bake or change mounts while a build
|
|
218
|
+
is running.
|
|
219
|
+
|
|
220
|
+
**For an existing workspace**, build into a separate new directory. Forge cannot take over a
|
|
221
|
+
nonempty workspace that it did not create. Inspect the resulting `slices/*.slice` aliases and
|
|
222
|
+
dependencies, then mount the selected individual slices. For example, if the build produced
|
|
223
|
+
`handbook.slice` and its alias is available in your destination:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
mindslice -w ~/mindslice mount /path/to/build.workspace/slices/handbook.slice \
|
|
227
|
+
--precedence 50 --role curated
|
|
228
|
+
mindslice -w ~/mindslice validate
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Mount each required slice separately, preserving aliases used by cross-slice links. Resolve
|
|
232
|
+
collisions before mounting; do not silently replace an existing mount. The workspace root,
|
|
233
|
+
`slices/` parent and `.forge/` build directory are not slice mount targets.
|
|
234
|
+
|
|
235
|
+
Keep mounted paths stable. If you plan further Forge rebuilds, first copy the selected slices to
|
|
236
|
+
new durable library directories or the destination's `slices/` directory and mount those copies.
|
|
237
|
+
Otherwise a rebuild or rollback can change the files the live workspace reads. Keep the sibling
|
|
238
|
+
`.forge/` directory for resume and evidence; completed slice artifacts do not depend on it at runtime.
|
|
239
|
+
|
|
240
|
+
Validation checks structure, and recorded lookups check search coverage. Neither establishes that
|
|
241
|
+
the model preserved every fact. Treat input coverage, retrieval and source fidelity as separate
|
|
242
|
+
checks; a sampled build remains partial after it is connected to an agent.
|
|
243
|
+
|
|
244
|
+
## Safety
|
|
245
|
+
|
|
246
|
+
- Select allowed sources before invoking Forge, including `--dry-run`: recursive scanning does
|
|
247
|
+
not honor project ignore files or forbidden-directory markers. Pass selected files or prepare
|
|
248
|
+
an allowed snapshot with exclusions applied before traversal. Keep output, reference files and
|
|
249
|
+
conversion prompts outside the source directories.
|
|
250
|
+
- The harness command you give runs agents with tool permissions approved automatically, and the
|
|
251
|
+
splitter is a program the agent wrote. Convert sources you trust, or run the forge in a sandbox.
|
|
252
|
+
- Forge writes its output workspace and sibling `.forge/` directory. It refuses to take over an
|
|
253
|
+
existing nonempty output it did not create. Rollbacks happen inside its output directory and
|
|
254
|
+
cover the slices and the mount table only, never `overlay/`, `staging/` or `.history/`.
|
|
255
|
+
|
|
256
|
+
## Tests
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
python -m unittest discover -s tests -t . -v
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
The unit tests need nothing. The functional tests run whole builds with the real `mindslice` and
|
|
263
|
+
`git` commands and a fake agent ([`tests/fake_harness.py`](https://github.com/pancerZH/MindSlice-forge/blob/main/tests/fake_harness.py)); no model is
|
|
264
|
+
called.
|
|
265
|
+
|
|
266
|
+
### Checking a first real run
|
|
267
|
+
|
|
268
|
+
After a `--sample 2` run against a real harness, look at:
|
|
269
|
+
|
|
270
|
+
- the `[split]` line: the chunk count and the first and last titles should match the document;
|
|
271
|
+
`novel.workspace.forge/chunks/manifest.json` lists what was skipped and why;
|
|
272
|
+
- `git -C novel.workspace log --stat`: one commit per chunk, with the cards it touched;
|
|
273
|
+
- `mindslice -w novel.workspace validate`, and a few searches and reads of things you know are in
|
|
274
|
+
the first chunks, including one that changes over time;
|
|
275
|
+
- `novel.workspace.forge/report.md`.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
mindslice_forge/__init__.py,sha256=4-RV2O6Jiw6Oo0TMVDvmDkHeOr4RBDJQPedyGx1qYSk,504
|
|
2
|
+
mindslice_forge/__main__.py,sha256=E6Gls0DNz8GQK2K-kOUIx8cYhgANW_CH54VKrfCfs14,52
|
|
3
|
+
mindslice_forge/checkpoint.py,sha256=j332VW0oXnih0vjpN4I3nP3sPASy4JWX99DrSQwAIIw,4745
|
|
4
|
+
mindslice_forge/cli.py,sha256=qNePXGU2kPSrvCrjxhc_W87RYQ8w5tWTbV0yqQae7UI,4438
|
|
5
|
+
mindslice_forge/engine.py,sha256=D_S8rfjLqtZxwoNUl5pvDW03F_wGZd6gurZyerFVUok,3931
|
|
6
|
+
mindslice_forge/harness.py,sha256=QdU387bR1FiWC35Te1Rw6xjAXIG4-2R8Jq8JcqhrPTc,3836
|
|
7
|
+
mindslice_forge/lookup.py,sha256=H2FQnPc8lxXFGwloBeuuGEQzD4G0fJAvYaGGzvZ7rAI,3393
|
|
8
|
+
mindslice_forge/pipeline.py,sha256=Mhpvl7xhuUDG8trmqyFnmLX6uB_MAC2Ws7ws2rSOOcw,20556
|
|
9
|
+
mindslice_forge/profile.py,sha256=FAuNmQQS99lBc8Xrj7uDvjfjHSi3-J7c4nqdbcWw75U,2969
|
|
10
|
+
mindslice_forge/split.py,sha256=iDorZigZ_Cxwu1bfhw0F07yIakdPv3jSfRCmq9FcTEo,6583
|
|
11
|
+
mindslice_forge/state.py,sha256=YNc1e7sNUWTkQckWez-HkA78WPxYyhDXel-p_uwib1M,1481
|
|
12
|
+
mindslice_forge/prompts/card-format.md,sha256=FPRSCCoTs5OBwO696x7GWzw-sMKc7zD1lL53AQ3O8BY,5051
|
|
13
|
+
mindslice_forge/prompts/extract.md,sha256=xIGOLVWAycZmoLBqSirhuW0aBPCA2ScY4MrUbKhT-T4,5874
|
|
14
|
+
mindslice_forge/prompts/finalize.md,sha256=JmMr4UYOGI3icN64hJFQZf5m39qayg_kAXcb1FxyVH8,3799
|
|
15
|
+
mindslice_forge/prompts/plan.md,sha256=Za3PXodn5QEK5SLN0129OnQVSZX8nJPMeZXOSUWNPmQ,7977
|
|
16
|
+
mindslice_forge/prompts/probe.md,sha256=-GL3RR1poyiHjOq4XqUzumvAXzg0tUy28LmNFTSSnsM,762
|
|
17
|
+
mindslice_forge/prompts/repair.md,sha256=vqX6eXDXkDX2AZwK2mkZ2fJEOc-Mr9Z80wibCZDhOcA,1437
|
|
18
|
+
mindslice_forge-0.1.0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
19
|
+
mindslice_forge-0.1.0.dist-info/METADATA,sha256=xYMFqIYwbvNpoWS8O62oYs6XKDOpMeR3Mw1Zg69qbAs,16249
|
|
20
|
+
mindslice_forge-0.1.0.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
|
|
21
|
+
mindslice_forge-0.1.0.dist-info/entry_points.txt,sha256=L1-jJGQCOhTn1BDxDqGWQ4W_evQ-f_O_cYKQ8mChxeA,61
|
|
22
|
+
mindslice_forge-0.1.0.dist-info/top_level.txt,sha256=UG2QCvNTpBUju2BqXotNFmhSoPmCAbB1Wi9Sc57X48g,16
|
|
23
|
+
mindslice_forge-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
190
|
+
Copyright [yyyy] [name of copyright owner]
|
|
191
|
+
|
|
192
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
|
+
you may not use this file except in compliance with the License.
|
|
194
|
+
You may obtain a copy of the License at
|
|
195
|
+
|
|
196
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
197
|
+
|
|
198
|
+
Unless required by applicable law or agreed to in writing, software
|
|
199
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
200
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
201
|
+
See the License for the specific language governing permissions and
|
|
202
|
+
limitations under the License.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
mindslice_forge
|