@struktoai/mirage-core
Version:
A Unified Virtual Filesystem For AI Agents
43 lines • 2.1 kB
JavaScript
// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
import { FlagView } from "../../../spec/flag_view.js";
import { uploadFile as shareFile } from "../../../../core/slack/post.js";
import { IOResult } from "../../../../io/types.js";
import { compactJsonBytes } from "../../../../core/render/json.js";
import { fsStrerror, isEnotdir, isMissingPath } from "../../../../errors/fs.js";
import { posixPhrase } from "../../../../errors/posix.js";
import { rstripSlash } from "../../../../utils/slash.js";
export async function uploadFile(accessor, _paths, _texts, ctx) {
const fl = new FlagView(ctx.flags, ctx.spec);
const source = fl.asPath('file');
if (source === undefined)
throw new Error('--file expects a file');
if (ctx.vfs === undefined)
throw new Error('--file needs a workspace to read files from');
let data;
try {
data = await ctx.vfs.read(source);
}
catch (err) {
if (isMissingPath(err) || isEnotdir(err)) {
throw new Error(`read ${source.virtual}: ${fsStrerror(err) ?? posixPhrase('ENOENT')}`);
}
throw err;
}
const trimmed = rstripSlash(source.virtual);
const result = await shareFile(accessor, fl.asStr('channel') ?? '', trimmed.slice(trimmed.lastIndexOf('/') + 1), data, fl.asStr('initial_comment'), fl.asStr('thread_ts'));
const out = compactJsonBytes(result);
return [out, new IOResult()];
}
//# sourceMappingURL=upload_file.js.map